warning pragma

コンパイラの警告メッセージの動作の選択的な変更を有効にします。

構文

#pragma warning(
warning-specifier : warning-number-list

#pragma warning( push [ ,n ] )
#pragma warning( pop )

解説

次の警告指定子パラメーターを使用できます。

警告指定子 意味
指定された警告に特定のレベルを適用します。 また、既定で無効になっている指定された警告も有効にします。
default 警告の動作を既定値にリセットします。 また、既定で無効になっている指定された警告も有効にします。 警告は、既定の文書化されたレベルで生成されます。

詳細については、「既定で無効になっているコンパイラ警告」を参照してください。
disable 指定した警告メッセージを発行しません。
error 指定した警告をエラーとして報告します。
once 指定したメッセージを 1 回だけ表示します。
suppress pragma の現在の状態をスタックにプッシュし、次の行に対して指定された警告を無効にします。次に、pragma の状態がリセットされるように警告スタックをポップします。

次のコード ステートメントは、warning-number-list パラメーターが複数の警告の数を含むことができること、および複数の warning-specifier パラメーターが同じ pragma ディレクティブで指定できることを示しています。

#pragma warning( disable : 4507 34; once : 4385; error : 164 )

このディレクティブは、次のコードと機能的に同等です。

// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )

// Issue warning C4385 only once.
#pragma warning( once : 4385 )

// Report warning C4164 as an error.
#pragma warning( error : 164 )

コンパイラは、0 と 999 の間の任意の警告番号に 4000 を追加します。

4700-4999 の範囲の警告番号は、コード生成に関連付けられています。 これらの警告の場合、コンパイラが関数定義に到達したときに有効な警告の状態は、関数の残りの部分に対して有効なままです。 関数の warningpragma を使用して、4699 より大きい警告番号の状態を変更することは、関数の終了後にのみ有効になります。 次の例では、コード生成の警告メッセージを無効にし、これを復元するための、warningpragma の正しい配置を示します。

// pragma_warning.cpp
// compile with: /W1
#pragma warning(disable:4700)
void Test() {
   int x;
   int y = x;   // no C4700 here
   #pragma warning(default:4700)   // C4700 enabled after Test ends
}

int main() {
   int x;
   int y = x;   // C4700
}

関数本体全体において、warningpragma の最後の設定が関数全体に対して有効になることに注意してください。

プッシュおよびポップ

warningpragma では、次の構文もサポートされています。ここで省略可能な n パラメーターは、警告レベル (1 から 4) を表します。

#pragma warning( push [ , n ] )

#pragma warning( pop )

pragmawarning( push ) は、警告ごとに現在の警告状態を格納します。 pragmawarning( push, n ) は、警告ごとに現在の状態を保存し、グローバル警告レベルを n に設定します。

pragmawarning( pop ) は、スタックにプッシュされた最後の警告状態をポップします。 pushpop の間の警告状態に行った変更は元に戻されます。 以下に例を示します。

#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )

このコードの最後に、pop は、すべての警告の状態をコードの開始時の状態に復元します (4705、4706、および 4707 が含まれます)。

ヘッダー ファイルを作成するときは、push および pop を使用して、ユーザーが行った警告状態の変更がヘッダーによるコンパイルの正常な実行を妨げないようにできます。 push はヘッダーの先頭で、pop は末尾で使用します。 たとえば、警告レベル 4 では正常にコンパイルされないヘッダーがある場合があります。 次のコードでは、警告レベルを 3 に変更し、ヘッダーの最後に元の警告レベルを復元します。

#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )

警告を非表示にする場合に役立つコンパイラ オプションの詳細については、「/FI」および「/w」を参照してください。

関連項目

pragma ディレクティブと __pragma および _Pragma キーワード