Windows 7 32 비트 시스템에 MinGW를 성공적으로 설치했으며 명령 줄 또는 MinGW 콘솔을 사용하여 간단한 프로그램을 컴파일하려고했습니다. 에서는 hello.c : 7 : 2 : 경고 : 유형의 형식 '% d를'예상 인수MinGW가 경고를 표시하지 않습니다.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("%d\n" , 3.14) ;
return 0 ;
}
명령 gcc -Wall hello.c
는 정확한 경고를 제공합니다
코드는 printf와 문에서 의도적 인 오류가 '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 :
는 stdio.h
를 포함하기 전에 _GNU_SOURCE
정의 gcc -Wall hello.c
으로 경고를 제거합니다.
업데이트 2 (이하 관련이있을 수) : 0.000000
-std=gnu99
출력 :
는
printf("%lf\n" , 3.14) ;
-std=c99
플래그 출력 컴파일 3.140000
을 그리고 컴파일 :
,451,515,printf("%f\n" , 3.14) ;
-std=gnu99
및 -std=c99
출력 : 3.140000
업데이트 3 :
기능 영향을받을 것입니다 : printf와, fprintf와, 현재 snprintf, sprintf를. std=c99
옵션을 사용할 때
어떤 버전입니까? 'gcc --version' – ooga
나는 같은 결과를 얻는다 (또한 4.8.1). 이 버그는 나에게 버그처럼 보이기 때문에 개발자에게 알려야합니다. – ooga
-Wformat을 명시 적으로 사용하면 어떨까요? –