MinGW não produz avisos
Instalei o MinGW com êxito em uma máquina Windows 7 de 32 bits e tentei compilar um programa simples usando a linha de comando ou o console do MinGW.
O código possui um erro intencional em uma instrução printf:
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
printf("%d\n" , 3.14 ) ;
return 0 ;
}
O comandogcc -Wall hello.c
emite um aviso correto:hello.c: 7: 2: warning: o formato '% d' espera um argumento do tipo 'int' ...
Mas o comandogcc -std=c99 -Wall hello.c
não dá nenhum aviso.
Ambos criam um executávela.exe (que é executado e fornece o mesmo resultado).
(Curiosamente, um comandogcc -std=gnu99 -Wall hello.c
emite o aviso.)
Não sei se isso é um erro ou a instalação deu errado de alguma forma, mas ambos parecem improváveis, pois o compilador funciona e compilou com êxito um projeto maior (mas o mesmo aviso, é claro, omitido ao usar -std = c99).
Devo estar faltando alguma informação.
(ps: se alguém tiver uma nova instalação do MinGW, teste isso.)
gcc versão 4.8.1 (GCC)
Atualização 1:
Definindo_GNU_SOURCE
antes de incluirstdio.h
remove o aviso mesmo comgcc -Wall hello.c
.
Atualização 2 (pode ser menos relevante):
Compilando
printf("%lf\n" , 3.14 ) ;
-std=c99
saídas de sinalização: 0.000000
-std=gnu99
saídas: 3.140000
E compilando:
printf("%f\n" , 3.14 ) ;
-std=gnu99
e-std=c99
saída: 3.140000
Atualização 3:
As funções que parecem ser afetadas são: printf, fprintf, snprintf, sprintf.