2016-08-08 11 views
2

++グラムでプラグマを無視されていません警告フラグを有効にしたままにしますが、この特定のインスタンスを抑制します。
私は次のように適用されます。-Wundefは、次のコードを考える

#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を使用して自分自身のプライベートヘッダでそれらをラップすることでした。私はインクルードをきちんとした状態に保つために自分のラッパーを使用し、必要に応じて将来の追加のカスタマイズポイントを許可します。

関連する問題