2011-12-14 2 views
8

私は既存のコードベースに-Werrorフラグを導入しようとしています。私が遭遇している問題の1つは、情報メッセージを表示するためにいくつかの場所で#warningが使用されているということです。これらはエラーとして扱われるべきではありません。`#warning`メッセージがエラーとして扱われないようにするには?

代わりに#pragma messageを使用するのが1つの解決策ですが、これはgccの古いバージョンではサポートされていないようです。 (ビルドサーバはgcc 4.1.2を使用しています)。

誰も私がこの問題を解決する手助けすることはできますか?

+5

さて、あなたは '#warning'を悪用しようとしています。それを取り除き、問題を解決してください。 –

+4

@CatPlusPlus:代替案の掲載はどうですか? – UncleBens

+1

@UncleBens:「取り除く」以外の代替案を提案するために実際に何をしているのかを確認する必要があります。それはビルドシステムレベルで何かに置き換えることができる可能性があります。 –

答えて

4

gcc-4.6以上では、-Wno-error=cppを使用できます。少なくともLion以降でリリースされたclangでは、-Wno-error=#warningsを使用できます。しかし、あなたのビルドサーバは古くからのgccを使用しているので、おそらくあなたはそこから運が悪いでしょう。あなたに警告を制御警告フラグを伝え

test.cc:1:2: warning: #warning hello [-Wcpp] 

:一般的に

は、警告のような出力を表示持つように-fdiagnostics-ショーオプションを渡します。 gcc> = 4.6とclangではこれがデフォルトですので、それを渡すことはもう役に立たないかもしれません。次のように

1

ローカル#warningため-Werrorの効果を無効にします。

#pragma GCC diagnostic push 
#pragma GCC diagnostic warning "-Wcpp" 
#warning Informative message: everything is nice and good!!! 
#pragma GCC diagnostic pop 

をこのアプローチの利点は、あなたはまだ他の場所コードで#warningでエラーを誘発することができるということです。

+2

上記はgcc 4.1.2では動作していないようです - 私は "警告:#pragma GCC診断を無視"し、#警告行はエラーとして(-Werrorが定義されているように) –

関連する問題