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
パラメーターが複数の警告の数を含むことができること、および複数の 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 の範囲の警告番号は、コード生成に関連付けられています。 これらの警告の場合、コンパイラが関数定義に到達したときに有効な警告の状態は、関数の残りの部分に対して有効なままです。 関数の warning
pragma を使用して、4699 より大きい警告番号の状態を変更することは、関数の終了後にのみ有効になります。 次の例では、コード生成の警告メッセージを無効にし、これを復元するための、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 )
pragmawarning( push )
は、警告ごとに現在の警告状態を格納します。 pragmawarning( push, n )
は、警告ごとに現在の状態を保存し、グローバル警告レベルを n に設定します。
pragmawarning( 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
」を参照してください。