Интересно, почему gcc (4.6.3) не дает мне предупреждения о недоступном коде в этом примере:
#include <stdio.h>
int status(void)
{
static int first_time = 1;
if (first_time) {
return 1;
first_time = 0; /* never reached */
} else {
return 0;
}
}
int main(int argc, const char *argv[])
{
printf("first call %d\n", status());
printf("second call %d\n", status());
return 0;
}
Обратите внимание, что целью ошибочной функции status()
было сохранение статуса. Я ожидал получить предупреждение об этом с -Wall
. Я пробовал также -Wunreachable-code
, -Wextra
, -pedantic
и -ansi
(как обсуждалось здесь). Тем не менее, никто из них не дает мне предупреждение.
Похоже, gcc молча удаляет назначение статической переменной.
На мой взгляд, gcc options -Wall -Werror
должен -Wall -Werror
ошибку.