문제
ANSI C (C99) 경고/오류를 시행하기 위해 어떤 GCC 옵션을 사용해야합니까? GCC (GCC) 3.4.2 (mingw- 전문가)
사용 중입니다 : gcc -pedantic -ansi -std = c99 이것이 맞습니까?
해결책
그만큼 -ansi
플래그는 The와 동의어입니다 -std=c89
깃발.
그냥 사용합니다 -std=c99
~와 함께 -pedantic
충분해야합니다.
의심스러운 경우 항상 할 수 있습니다 GCC 문서를 참조하십시오. GCC 3.4.2에서 읽을 장은 다음과 같습니다. 2- GCC가 지원하는 언어 표준.
다른 팁
이것은 오래된 질문이지만 추가 점수를 추가하고 싶었습니다.
첫째, GCC에 공급하는 일반 명령 줄 스위치 세트에 관계없이 현재 GCC를 모두보고 할 수없는 것으로 보입니다. 제약 위반 "오류"및 다른 모든 것은 "경고"로서. "경고"로서 GCC 보고서가 실제로 진단 메시지 중 일부는 제약 위반 (예 : "오류") C 언어의 관점에서 볼 때 GCC가 그 사실을 인식하고 "오류"진단을 생성하도록 강요 할 방법은 없습니다. 개별 경고 유형을 미세 조정함으로써보다 정확한 분리를 달성 할 수 있지만 GCC 설정이 좋은 일치를 달성하기에 충분한 세분성을 제공 할 수는 없습니다.
둘째, GCC는 제공합니다 -pedantic-errors
평원 대신에 사용할 수있는 옵션 -pedantic
, 이는 진단 메시지의 "오류"및 "경고"로보다 정확한 (위에서 설명한) 분류를 가능하게하기위한 것입니다. 그래도 아직 완벽하지는 않습니다.
추신 : 언어 사양은 진단 메시지를 "오류"및 "경고"로 분리 할 필요가 없거나 정의되지 않지만 실제로 많은 프로그래머는 제약 위반이 "오류"로보고 될 것으로 예상합니다. 나는 당신이 당신의 질문에 "경고/오류를 시행"할 때 그런 의미를 가질 수 있다고 생각했습니다.
-ansi
In C mode, this is equivalent to -std=c89. In C++ mode, it is equivalent to -std=c++98.
ANSI C는 C99와 동일하지 않습니다 (아직). 또한, -Wall
또한 관심이있을 수 있지만만 -pedantic
원하는대로해야합니다.