возьмите, например, следующий код C:
int main(int argc, char *argv[])
{
signed char i;
unsigned char count = 0xFF;
for (i=0; i<count;i++)
{
printf("%x\n", i);
}
return 0;
}
Этот код работает в бесконечном цикле, даже если я его скомпилирую следующим образом:
# gcc -Wall -Wpedantic -Wconversion -Wsign-compare -Wtype-limits -Wsign-conversion test.c -o test
Знает ли кто-нибудь флаг компилятора, который должен предупреждать об этих проблемах?
Просто, чтобы быть ясным, я не спрашиваю "зачем нужен бесконечный цикл", но знать, есть ли способ предотвратить его с помощью компилятора или статического анализа?