Почему GCC не предупреждает о недоступности кода?
интересно, почемуgcc (4.6.3) не дает мне никакого предупреждения длянедостижимый код в этом примере:
#include
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-Wall -Werror
должен сгенерировать ошибку.