MinGW не выдает предупреждений
Я успешно установил MinGW на 32-битную машину Windows 7 и попытался скомпилировать простую программу, используя либо командную строку, либо консоль MinGW.
В коде есть преднамеренная ошибка в выражении printf:
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
printf("%d\n" , 3.14 ) ;
return 0 ;
}
Командаgcc -Wall hello.c
дает правильное предупреждение:hello.c: 7: 2: предупреждение: формат "% d" ожидает аргумент типа "int" ...
Но командаgcc -std=c99 -Wall hello.c
не дает никаких предупреждений.
Оба создают исполняемый файлa.exe (который работает и дает тот же результат).
(Интересно командаgcc -std=gnu99 -Wall hello.c
дает предупреждение.)
Я не знаю, является ли это ошибкой, или установка как-то пошла не так, но оба они кажутся маловероятными, так как компилятор работает и успешно скомпилировал большой проект (но это же предупреждение, конечно, пропускается при использовании -std = c99).
Мне должно быть не хватает какой-то информации.
(ps: если у кого-то установлена новая версия MinGW, проверьте это.)
gcc версия 4.8.1 (GCC)
Обновление 1:
определяющий_GNU_SOURCE
перед включениемstdio.h
удаляет предупреждение даже приgcc -Wall hello.c
.
Обновление 2 (может быть менее актуально):
составление
printf("%lf\n" , 3.14 ) ;
-std=c99
вывод флагов: 0,000000
-std=gnu99
выходы: 3.140000
И составление:
printf("%f\n" , 3.14 ) ;
-std=gnu99
а также-std=c99
выход: 3.140000
Обновление 3:
Кажется, что затронуты следующие функции: printf, fprintf, snprintf, sprintf.