翻訳単位の特定のセクションに対する GCC 警告を無効にする
提供されている MSVC プリプロセッサ コードと同様の機能を GCC で実現するのは簡単ではない可能性がありますただし、GCC 診断を使用する実行可能な回避策があります。 pragmas.
GCC 診断プラグマ #pragma GCC Diagnostics を使用して、翻訳単位内の警告およびエラー設定を操作できます。特定の警告を一時的に無効にしたり無視したりできます。
警告を条件付きで無効にするには、次の構文を使用します。
#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wwhatever" // Code that would normally generate the warning #pragma GCC diagnostic pop
このアプローチでは、定義されたコード ブロック内で指定された警告が抑制されます。翻訳内の他の場所で警告を生成できるようにするunit.
例:
ヘッダー ファイル math.h に、ゼロで除算する可能性がある関数 Division() が含まれていると想像してください。 math.h を他のソース ファイルにインクルードするときに、この警告が発行されないようにしたいと考えています。
math.h 内:
#include <cmath> int divide(int a, int b) { return std::floor(static_cast<double>(a) / b); }
別のソース ファイル内:
#include "math.h" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdiv-by-zero" divide(1, 0); // The warning is suppressed here #pragma GCC diagnostic pop divide(2, 3); // Warning is still generated for this call
この方法で警告を選択的に無効にすることで、望ましい警告動作を維持しながら、コードベースの特定の部分が不要な警告を生成するのを防ぐことができます。
以上が特定のコードセクションで GCC 警告を選択的に無効にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。