2011-12-14 4 views
8

기존 코드베이스에서 -Werror 플래그를 컴파일하려고합니다. 내가 만나는 문제 중 하나는 정보 메시지를 표시하는 데 어떤 장소에서 #warning이 사용된다는 것입니다. 이것들은 오류로 취급해서는 안됩니다.`# warning` 메시지가 오류로 취급되지 않게하는 방법은 무엇입니까?

대신 하나의 해결책은 #pragma message을 사용하는 것이지만 gcc의 이전 버전에서는 지원하지 않는 것 같습니다. (우리의 빌드 서버는 gcc 4.1.2를 사용합니다).

누구든지 해결할 수 있습니까?

+5

글쎄, 당신은'# 경고 '를 남용하고 있습니다. 문제를 해결하고 문제를 해결하십시오. –

+4

@CatPlusPlus : 대안 게시는 어떻습니까? – UncleBens

+1

@UncleBens : "제거"이외의 대안을 제시하기 위해 실제로 실제로 무엇을하는지 알아야합니다. 그것은 빌드 시스템 레벨에서 무언가로 대체 될 수 있습니다. –

답변

4

gcc-4.6 이상에서는 -Wno-error=cpp을 사용할 수 있습니다. 최소한 Lion 이후 출시 된 clang에서는 -Wno-error=#warnings을 사용할 수 있습니다. 그러나 빌드 서버가 고대 gcc를 사용하기 때문에 아마도 거기에서 운이 나올 것입니다. 당신에게 경고를 제어하는 ​​경고 플래그를 알려줍니다

test.cc:1:2: warning: #warning hello [-Wcpp] 

: 일반적으로

는 경고와 같은 출력을 보여줍니다 가지고 -fdiagnostics 쇼 - 옵션을 전달합니다. gcc> = 4.6 및 clang에서는 이것이 기본값이므로 더 이상 유용하지 않을 수도 있습니다. #warning에 대한 -Werror

1

로컬 해제 효과 다음은 :

#pragma GCC diagnostic push 
#pragma GCC diagnostic warning "-Wcpp" 
#warning Informative message: everything is nice and good!!! 
#pragma GCC diagnostic pop 

이 방법의 장점은 여전히 ​​다른 코드에서 #warning와 오류를 유도 할 수 있다는 것입니다.

+2

위의 내용은 gcc 4.1.2에서 작동하지 않는 것으로 보입니다. "경고 : #pragma GCC 진단을 무시합니다"라는 경고 메시지가 나타나고 # 경고 행이 오류로 선택됩니다 (-Werror가 정의 됨) –

관련 문제