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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage