Ho installato con successo MinGW su una macchina Windows 7 a 32 bit e ho provato a compilare un semplice programma utilizzando la riga di comando o la console MinGW.MinGW non produce avvisi
il codice è un errore intenzionale in una dichiarazione printf:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("%d\n" , 3.14) ;
return 0 ;
}
Il comando gcc -Wall hello.c
dà una corretta avvertimento: hello.c: 7: 2: avvertimento: formato '% d' aspetta argomento di tipo 'int' ...
Ma il comando gcc -std=c99 -Wall hello.c
non fornisce alcun avviso.
Entrambi creano un file eseguibile a.exe (che viene eseguito e restituisce lo stesso risultato).
(È interessante notare che un comando gcc -std=gnu99 -Wall hello.c
dà l'allarme.)
Non so se questo è un bug, o ha fatto l'installazione andare male in qualche modo, ma sembra sia improbabile poiché le opere del compilatore e con successo compilato una più grande progetto (ma lo stesso avvertimento ovviamente omesso quando si utilizza -std = c99).
Mi mancano alcune informazioni.
(ps: se qualcuno ha un nuovo MinGW installare, si prega di verificare questa.)
versione di gcc 4.8.1 (GCC)
Update 1:
Definizione _GNU_SOURCE
prima di includere stdio.h
rimuove l'avviso anche con gcc -Wall hello.c
.
Aggiornamento 2 (potrebbe essere meno rilevante):
Compilazione
printf("%lf\n" , 3.14) ;
-std=c99
uscite bandiera: 0.000000
-std=gnu99
uscite: 3,140000
e la compilazione:
01.235.164,106 milaprintf("%f\n" , 3.14) ;
-std=gnu99
e -std=c99
uscita: 3,140000
Update 3:
funzioni che sembrano essere colpiti sono: printf, fprintf, snprintf, sprintf.
Quale versione? 'gcc --version' – ooga
Ottengo lo stesso risultato (anche 4.8.1). Qualcuno dovrebbe dirlo agli sviluppatori perché questo mi sembra un bug. – ooga
Cosa succede se si utilizza -formato in modo esplicito? –