34

GCC から次の警告が表示されます。

警告: '...' を介して非 POD タイプ 'class Something' のオブジェクトを渡すことはできません。呼び出しは実行時に中止されます

特に中止を呼び出すため、これはかなり致命的です。なぜこれはエラーにならないのですか? エラーにしたいのですが、

  1. 特定の警告をエラーにするにはどうすればよいですか?
  2. どの警告ですか?3.8 Options to Request or Suppress Warningsによると-Wno-invalid-offsetof、それを非表示にするフラグのように見えますが、そうではありません。
4

5 に答える 5

29

正しい警告が何であるかはわかりませんが、それを見つけたら、次のようにその性質を変更できます (例として 'format' を使用):

#pragma GCC diagnostic error "-Wformat"

または、ストレンジャーが指摘するように

gcc -Werror=format ...

これについて gcc ソースを確認しましたが、この特定の警告はコマンド ライン フラグで無効にすることはできません。

于 2009-01-24T03:13:59.180 に答える
13

-Werror=specific-warning-Wspecific-warningGCC 4.3.x 以降では、指定をエラーにします。4.1.2 でのみ-Werror-implicit-function-declaration機能します。等号の代わりにハイフンに注意してください。これは特定のケースでのみ機能し、他のケースでは機能しません。これは、より深刻な一般的な警告の 1 つであり、エラーにするのは間違いなく便利です。

それとは別に、古いバージョンの GCC は、-Werror最後の警告をすべてエラーにする大ハンマーを提供するだけのようです。

于 2009-06-26T01:56:12.490 に答える
7

エラーにされたくない他の警告がたくさんあるようです ( -Werrorフラグを使用)。一般に、すべての警告を修正することをお勧めします。-Werrorを使用すると、これが強制されます。

于 2009-01-24T03:17:01.060 に答える
5

-Werrorコンパイラ フラグを使用して、すべてまたは一部の警告をエラーに変えることができます。

于 2009-01-24T03:15:47.507 に答える
2

-fdiagnostics-show-optionを使用して、特定の警告に適用される -W オプションを表示できます。

残念ながら、この場合、その警告をカバーする特定のオプションはありません。

GCC 4.5 では、これに対するサポートが改善されるようです。

于 2009-12-16T13:51:35.547 に答える