MinGW erzeugt keine Warnungen

Ich habe MinGW erfolgreich auf einem Windows 7 32-Bit-Computer installiert und versucht, ein einfaches Programm über die Befehlszeile oder die MinGW-Konsole zu kompilieren.

Der Code hat einen beabsichtigten Fehler in einer printf-Anweisung:

#include <stdio.h>
#include <stdlib.h>
int main( void )
{
    printf("%d\n" , 3.14 ) ;
return 0 ;
}

Der Befehlgcc -Wall hello.c gibt eine korrekte Warnung aus: hello.c: 7: 2: Warnung: Format '% d' erwartet Argument vom Typ 'int' ...

Aber der Befehlgcc -std=c99 -Wall hello.c gibt keine Warnung aus.

Beide erstelle eine ausführbare Datei a.exe (das läuft und das gleiche Ergebnis liefert).

(Interessanterweise ein Befehlgcc -std=gnu99 -Wall hello.c gibt die Warnung aus.)

Ich weiß nicht, ob dies ein Fehler ist oder ob die Installation irgendwie schief gelaufen ist, aber beide scheinen unwahrscheinlich, da der Compiler funktioniert und ein größeres Projekt erfolgreich kompiliert wurde (aber dieselbe Warnung wird natürlich bei Verwendung von -std = c99 weggelassen).

Ich muss einige Informationen fehlen.

(ps: Wenn jemand eine neue MinGW-Installation hat, testen Sie diese bitte.)

gcc Version 4.8.1 (GCC)

Update 1:

Defining_GNU_SOURCE vor dem Einschließen vonstdio.h entfernt die Warnung auch mitgcc -Wall hello.c.

Update 2 (möglicherweise weniger relevant):

Kompilieren

 printf("%lf\n" , 3.14 ) ;

-std=c99 Flag-Ausgaben: 0.000000

-std=gnu99 Ausgänge: 3.140000

Und kompilieren:

 printf("%f\n" , 3.14 ) ;

-std=gnu99 und-std=c99 output: 3.140000

Update 3:

Funktionen, die betroffen zu sein scheinen, sind: printf, fprintf, snprintf, sprintf.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage