2009-06-19 3 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

Thanxには載っていませんが、この '#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を使用する方法について説明します特定の警告を制御します。

もちろん、すべての警告の根本原因を抑止するよりも、これは一般的にははるかに好ましい方法です。しかし、時にはそれは不可能です。

関連する問題