2012-09-12 15 views
1

CMake 스크립트에서 생성 된 C++ Xcode 3 프로젝트가 있습니다. 세미콜론 후행하게 몇 가지 컴파일러 옵션이 있습니까"추가 ';' "Xcode C++ 프로젝트에서 컴파일 오류가 발생했습니다.

if(...) 
{ 
... 
}; 

: 그것은 뒤에 괄호가 uneccessary 세미콜론이있을 때하지만이 프로젝트에 내가 컴파일 오류 Extra ';'를 얻기 전에 항상 일한 일부 오픈 소스 헤더를 사용 내가 켤 수없는 오류? 여기

볼, 잘못된 파일 중 하나입니다 라인 259 : http://zziplib.svn.sourceforge.net/viewvc/zziplib/trunk/zzip-0/zzip/zzip.h?revision=523&view=markup

+0

세미콜론 완벽하게 합법적이어야한다'if' 문을 닫는'}'다음. 그 맥락에서, 그것은 단순히 null 문입니다. 당신은 헤더를 언급하기 때문에, 선언 후에 길잃은 세미콜론을 가지고 있다고 의심됩니다. 실제 코드 스 니펫을 보여주십시오. 사용중인 오픈 소스 헤더를 알려주실 수 있습니까? 헤더를 고칠 수 있습니까? –

+0

@KeithThompson, 실제 파일에 대한 링크를 추가했습니다. –

답변

4

세미콜론 경고는 -pedantic (또는 -pedantic-errors) 옵션의 호의를 올; 난 당신이 그것을 별도로 해제 할 수 있다고 생각하지 않습니다.

경고가 아닌 세미콜론을 제거하는 것이 좋습니다.

if(...) 
{ 
... 
}; 

이 완벽하게 합법적입니다;

+0

하나의 CMake 스크립트가 좋아하지 않으므로 안정적이고 널리 사용되는 OSS 프로젝트를 변경하는 것은 나에게 잘못된 방식으로 보입니다! CMake 스크립트를 유지하는 사람에게이 사실을 알려 드리겠습니다. –

+0

'-pedantic'은 경고를 생성하고'-pedantic-errors'는 오류를 발생시킵니다. – juanchopanza

+0

@ 존 : 헤더 파일이 잘못되었습니다. C++. CMake 스크립트의 메인테이너가 그것에 대해 무엇을 기대합니까? zziplib의 관리자는 오류를 수정해야합니다. (나는 그에게 직접 연락 할 것이다.) –

2

샘플 코드의 추가 세미콜론 당신은 우리를 보여 주었다 null 문입니다.

오류는 실제로 extern "C"에서 추가 세미콜론에 관한 것입니다. zziplib 라이브러리에있는 세 개의 소스 파일에서 다음이 나타납니다 :

#ifdef __cplusplus 
extern "C" { 
#endif 

... 

#ifdef __cplusplus 
}; 
#endif 

이 사실 구문 오류입니다. 일부 컴파일러는 불평하지 않거나 경고 만 낼 수도 있지만 g++ -pedantic-errors은 치명적인 오류입니다.

나는 zziplib의 메인테이너이 문제를보고, 난 그냥 응답받은했습니다

Thanks for pointing to the problem, fixed in r524 now. I will 
probably roll a public release next month (still need to check 
the win32 version). 

best regards, Guido Draheim 

ChangeLog: 

2012-09-15 guidod <[email protected]> 
    * zzip.h, plugin.h: "};" at end of extern-C produces build errors with 
     the default --pedantic-errors on newer CMake. Thanks to Keith Thompson 
     recognizing it - see http://stackoverflow.com/questions/12384280/ 
관련 문제