2010-04-20 6 views
5

-pedantic 플래그를 사용하여 프로그램을 작성 중이므로 extra ';' 오류가 발생합니다 (일부 매크로를 일관성없이 사용하는 타사 헤더로 인해 오류가 발생 함). -pedantic이 꺼져 있으면 표시되지 않음). 나는 실제로 -pedantic을 끄고 싶지 않으며 헤더도 편집하고 싶지 않습니다. 이 정확한 오류를 억제 할 수있는 방법이 있습니까? -Wno-annoying-semicolon-error 컴파일러 스위치 같은 거요?-pedantic이 켜져있을 때 GCC의 "extra"; ' "오류를 표시하지 않습니다.

+0

이 왜 현학적 사용 하시겠습니까? http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options을 보면 원하는 것을 할 수있는 방법이없는 것처럼 보입니다. 페티시즘의 사용이 단순히 감정을 기반으로한다면, 당신은 그것 없이는 더 나을 것입니다 ;-) –

+0

글쎄, 감정뿐만 아니라 :) 나는 따라야 만하는 강한 추천이 있습니다 –

+0

흠. 까다 롭습니다. 제 3 자 헤더가 오픈 소스라고 생각하지 않습니까? 그것을 고칠 기회가 있습니까? –

답변

1

해결 방법은 -pedantic을 제거하는 것입니다. 이 경우에는 다른 방법이 없습니다.

+0

... 버그가있는 코드를 수정하십시오. 아아. –

+0

@RomanD 여분의 세미콜론이 실제로 "버그가 있습니까?" –

+0

@KyleStrand 실제로 "버그가있는"것은 아니지만 완전히 정확하지는 않습니다. 나는 4 년 전에 어떤 라이브러리가 나에게이 문제를 일으켰는지 기억하지 못한다. 그러나이 문제로 이끄는 매크로 마술이 있었다. –

2

포함 경로를 전달할 때 대신 -isystem을 사용하면 GCC가 시스템 헤더에 대해 경고하지 않습니다.

유지 관리하는 헤더의 경우 해당 헤더를 편집하십시오.

+0

저를 위해 일하지 않았습니다. -isystem과 함께 라이브러리를 포함 시켰지만 linux-> apple 크로스 컴파일러에 대한 경고가 여전히 발생했지만 g ++ 및 clang에서 확실히 작동합니다. – Flamefire

2

이 같은 외부 헤더에 대한 현학적 경고를 억제 할 수

//save compiler switches 
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wpedantic" 

//Bad headers with problem goes here 
#include <ros/ros.h> 
#include <sensor_msgs/LaserScan.h> 

//restore compiler switches 
#pragma GCC diagnostic pop 
관련 문제