2016-08-08 21 views
2

編譯考慮下面的代碼忽略保持警告標誌啓用,但禁止這個特定的實例。
我申請了以下內容:-Wundef沒有被用在G ++

#ifdef __GNUC__ 
#pragma GCC diagnostic ignored "-Wundef" 
#pragma GCC diagnostic push 
#endif 

#if MACRO_WITHOUT_A_VALUE 
int var; 
#endif 

#ifdef __GNUC__ 
#pragma GCC diagnostic pop 
#endif 

int main(){} 

這隻有在clang++解決問題。

命令clang++ -std=c++1z -Wundef -o main main.cpp生成沒有警告。
命令g++ -std=c++1z -Wundef -o main main.cpp和以前一樣使用相同的[-Wundef]警告。

如何在g++中抑制-Wundef警告?

g++ (Ubuntu 5.1.0-0ubuntu11~14.04.1) 5.1.0 
clang version 3.8.0 
+1

你可以使用'#if defined(MACRO_WITHOUT_A_VALUE)&& MACRO_WITHOUT_A_VALUE'嗎? – Ryan

+0

也許,但我正在包裝我不想修改的第三方代碼。 –

+0

把它換成'#ifdef'而不是呢? – Ryan

回答

2

我已經當第三方頭被誘導的警告之前做的是將它們包裝在使用#pragma GCC system_header只是沉默所有從頭部的警告我自己的私人頭。我使用我自己的包裝來保持包含整齊,並允許在未來需要額外的定製點。