2017-12-16 27 views
1

코드에서 gcc 진단을 여러 번 눌러야합니다. 단일 파일에이 파일이 필요한 경우 다음을 수행합니다.하나의 전처리 기 정의에 여러 개의 pragma 지시문 넣기

#pragma GCC diagnostic push 
#pragma GCC diagnostic error "-Wformat" 
#pragma GCC diagnostic error "-Wuninitialized" 

...some code... 

#pragma GCC diagnostic push 

그러나 여러 위치에서이 파일이 필요합니다. 그래서 #define이나 비슷한 것을 원합니다. 나는 다음과 같은 생각을했지만 c 프리 프로세서는 #define에 #pragma를 허용하지 않는다.

#define PushWarnings \ 
    #pragma GCC diagnostic push \ 
    #pragma GCC diagnostic error "-Wformat" \ 
    #pragma GCC diagnostic error "-Wuninitialized" 

이 방법이 있습니까?

+0

@EHHeal "수정"이란 무엇을 의미합니까? – melpomene

+1

코드는 * 사용 가능 * 경고 (또는 오히려 오류로 변환)를 사용 불가능하게하지는 않습니다. – melpomene

+0

@melpomene - 모든 경고가 오류이고 해당 보호 기능을 갖고 있지 않은 코드로 재생할 필요가 없도록 코드 컴파일 –

답변

5

예, 방법이 있습니다. C99은 _Pragma 연산자 (C++ 11 이후 C++에서도 사용 가능)를 도입했습니다.

프라그 마를 같은

#pragma GCC diagnostic error "-Wformat" 
가 매크로로부터 생성 될 수 있도록

는 또한, # 처리기 지시문 그렇지

_Pragma("GCC diagnostic error \"-Wformat\"") 

후자 같이 쓸 수있다 :

#define PushWarnings \ 
    _Pragma("GCC diagnostic push") \ 
    _Pragma("GCC diagnostic error \"-Wformat\"") \ 
    _Pragma("GCC diagnostic error \"-Wuninitialized\"") 
+0

좋아요. _Pragma에 대해 배우기를 기쁘게 생각합니다. – Paul