warning
pragma
コンパイラ警告メッセージの動作を選択的に変更できるようにします。
構文
#pragma warning(
warning-specifier
:
warning-number-list
[;
warning-specifier
:
warning-number-list
... ])
#pragma warning( push
[,
n ])
#pragma warning( pop )
備考
次の警告指定子パラメーターを使用できます。
warning-specifier | 意味 |
---|---|
1 、 2 、 3 、 4 |
指定したレベルを指定した警告に適用します。 また、既定ではオフになっている指定された警告もオンにします。 |
default |
警告動作を既定値にリセットします。 また、既定ではオフになっている指定された警告もオンにします。 警告は、既定の文書化されたレベルで生成されます。 詳細については、「コンパイラの警告が既定でオフになっているを参照してください。 |
disable |
指定した警告メッセージを発行しないでください。 |
error |
指定した警告をエラーとして報告します。 |
once |
指定したメッセージを 1 回だけ表示します。 |
suppress |
スタック上の pragma の現在の状態をプッシュし、次の行の指定された警告を無効にしてから、警告スタックをポップして、pragma 状態がリセットされるようにします。 |
次のコード ステートメントは、warning-number-list
パラメーターに複数の警告番号を含めることができる点と、同じ pragma ディレクティブで複数の warning-specifier
パラメーターを指定できることを示しています。
#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 の範囲の警告番号は、コード生成に関連付けられています。 これらの警告の場合、コンパイラが関数定義に到達したときに有効な警告の状態は、関数の残りの部分に対して有効なままです。 4699 より大きい警告番号の状態を変更する関数の warning
pragma の使用は、関数の終了後にのみ有効になります。 次の例は、コード生成警告メッセージを無効にして復元する warning
pragma の正しい配置を示しています。
// 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
}
関数本体全体で、warning
pragma の最後の設定が関数全体に対して有効になることに注意してください。
プッシュとポップ
warning
pragma では次の構文もサポートされています。省略可能な n パラメーターは警告レベル (1 から 4) を表します。
#pragma warning( push [ , n ] )
#pragma warning( pop )
pragma
warning( push )
には、すべての警告の現在の警告状態が格納されます。
pragma
warning( push, n )
は、すべての警告の現在の状態を格納し、グローバル警告レベルを nに設定します。
pragma
warning( pop )
は、スタックにプッシュされた最後の警告状態をポップします。
push
と pop
の間で警告状態に加えた変更は元に戻されます。 次の例を考えてみましょう。
#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
」を参照してください。