web-dev-qa-db-ja.com

g ++で特定の警告を抑制する方法

G ++からの特定の警告を抑制したい。 -Wno-XXXフラグを知っていますが、もっと具体的なものを探しています。 -Weffc++の警告のsomeが必要ですが、allの警告は必要ありません。 lintでできることのようなもの-特定のメッセージを無効にします。

これを行うための組み込みの方法はgccにありますか?ラッパースクリプトを作成する必要がありますか?

30
Gilad Naor

残念ながら、この機能はg ++では提供されていません。 VC++では、 #pragma warning を使用して、特定の警告を無効にすることができます。 gccでは、最も近いものは diagnostic pragmas です。これにより、特定のファイルまたはプロジェクトの特定のタイプの診断を有効/無効にできます。

20
Luc Touraille

一部の警告については、それらを無効にするコマンドラインスイッチがあります。使用するスイッチを知るには、-fdiagnostics-show-optionをgccに渡します。

11
JesperE

出力でgrep -vを使用できます。

無効にしたい警告によっては、コードで修正できる場合があります。例えば。:

int main()
{
  int i;
}

生成:foo.cc:4:警告:未使用の変数 'i'

これはしませんが:

#define MARKUSED(X)  ((void)(&(X)))

int main()
{
  int i;
  MARKUSED(i);
}
2
Mr.Ree

標準エラーを、見たくないものを削除するフィルターにパイプします。たとえば、これは私のmakeファイルです。

main.o:main.cpp g ++ -c -Wall main.cpp 2>&1 | grep -vWunused-変数

2
Boris Z