この例では、 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;
}
faultystatus()
関数の目的はステータスを維持することであることに注意してください。でこれに対する警告が表示されることを期待していました-Wall
。-Wunreachable-code
、-Wextra
、-pedantic
および-ansi
(ここで説明したように)も試しました。それでも、それらのどれも私に警告を与えません。
gcc は、静的変数の割り当てを黙って削除しているようです。
私の意見では、gcc オプション-Wall -Werror
はエラーをスローするはずです。