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.