Warum warnt GCC nicht vor nicht erreichbarem Code?
ich wundere mich warumgcc (4.6.3) gibt mir keine warnung für dieunerreichbarer Code In diesem Beispiel:
#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;
}
Beachten Sie den Zweck der fehlerhaftenstatus()
funktion war es, einen status beizubehalten. Ich hatte damit gerechnet, eine Warnung dafür zu bekommen-Wall
. Ich habe es auch versucht-Wunreachable-code
, -Wextra
, -pedantic
und-ansi
(wie es besprochen wurdeHier). Trotzdem warnt mich keiner.
Es scheint, als ob gcc die statische Variablenzuweisung stillschweigend entfernt.
Meiner Meinung nach gcc Optionen-Wall -Werror
sollte einen Fehler auslösen.