2009-06-19 2 views

답변

0

경고를 없애기 위해 다음 플래그를 사용하지 않겠습니까?

-Wno-enum-promotion 
+1

아니요. 실제로 gcc는이 옵션을 인식하지 못하는 것 같습니다. 이 옵션에 대해 어디에서 알았습니까? http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html –

0

글쎄,이 특정 경고를 비활성화하는 방법을 찾지 못해서 gcc의 #pragma system_header를 사용했다. 기본적으로 다음과 같이 문제가있는 헤더를 래핑했습니다.

여기서 foo.h는 문제가있는 헤더입니다. 이제 fooWrapper.h를 포함하기 만하면 문제가 해결됩니다. 이것은 일부 다른 컴파일러 (MSC 및 SUNPRO)에서도 작동하지만, 테스트하지는 않았습니다.

+0

고맙습니다.이'#pragma GCC system_header'는 많은 의미없는 경고로부터 저를 구해주었습니다. –

1

-Wno-enum-compare은이 경고를 무시합니다.

gcc4.6에서

See also

1

하고 나중에 즉, 특정 경고를 억제하고 단지 코드의 특정 블록에 그 억제 할 프라그의를 사용할 수 있습니다

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wno-enum-compare" 
// Code that causes warning goes here 
#pragma GCC diagnostic pop 

푸시/팝이 사용된다 코드가 처리되기 전의 진단 옵션을 보존합니다.

모든 경고를 표시하지 않으려면 #pragma GCC system_header을 사용하는 것보다 훨씬 좋은 방법입니다. (물론, 이전의 GCC에서 당신은 #pragma GCC system_header 접근 방식 "붙어"할 수있다!)

여기 억제 GCC 경고에 좋은 참조입니다 : http://www.dbp-consulting.com/tutorials/SuppressingGCCWarnings.html

이 페이지는 어떤 옵션을 찾을 -fdiagnostics-show-option을 사용하는 방법에 대해 설명합니다 특정 경고를 제어합니다.

물론, 모든 경고의 근본 원인을 수정하는 것이 더 바람직합니다. 그러나 때로는 불가능합니다.