/w、/W0、/W1、/W2、/W3、/W4、/w1、/w2、/w3、/w4、/Wall、/wd、/we、/wo、/Wv、/WX (警告レベル)

コンパイラが特定のコンパイルでどのように警告を生成するかを指定します。

構文

/w
/W0
/W1
/W2
/W3
/W4
/Wall
/Wv[:<バージョン>]
/WX
/w1<警告>
/w2<警告>
/w3<警告>
/w4<警告>
/wd<警告>
/we<警告>
/wo<警告>

解説

警告オプションを使って、表示するコンパイラの警告と、コンパイル全体の警告の動作を指定します。

次の表では、警告オプションと関連する引数について説明します。

オプション 説明
/w すべてのコンパイラの警告を抑制します。
/W0

/W1

/W2

/W3

/W4
コンパイラによって生成される警告のレベルを指定します。 有効な警告レベルの範囲は 0 から 4 までです。
/W0: すべての警告を抑制します。 これは /w と同じです。
/W1: レベル 1 (重大) の警告を表示します。 /W1 は、コマンド ライン コンパイラの既定の設定です。
/W2: レベル 1 とレベル 2 (重要) の警告を表示します。
/W3: レベル 1、レベル 2、レベル 3 (運用レベルの品質) の警告を表示します。 /W3 は、IDE の既定の設定です。
/W4: レベル 1、レベル 2、レベル 3 の警告と、レベル 4 (情報) の既定でオフになっていないすべての警告を表示します。 このオプションを使って、lint のような警告を表示することをお勧めします。 新しいプロジェクトの場合、すべてのコンパイルで /W4 を使うことをお勧めします。 このオプションは、見つけにくいコードの欠陥を可能な限り減らすのに役立ちます。
/Wall /W4 によって表示されるすべての警告と、/W4 に含まれない他のすべての警告 (たとえば、既定ではオフの警告など) を表示します。 詳細については、「既定で無効になっているコンパイラ警告」を参照してください。
/Wv[:<バージョン>] コンパイラ バージョン <バージョン> 以前で導入されている警告のみを表示します。 このオプションを使うと、より新しいバージョンのコンパイラに移行するときに、コードの新しい警告を抑制できます。 これにより、既存のビルド プロセスを修正しながら維持できます。 省略可能なパラメーター <バージョン> は nn[.mm[.bbbbb]] の形式で指定します。nn はメジャー バージョン番号、mm はマイナー バージョン番号 (省略可能)、bbbbb はコンパイラのビルド番号 (省略可能) です。 たとえば、/Wv:17 を使うと、Visual Studio 2012 (メジャー バージョン 17) 以前に導入された警告のみが表示されます。 つまり、メジャー バージョン番号が 17 以下であるすべてのバージョンのコンパイラからの警告が表示されます。 Visual Studio 2013 (メジャー バージョン 18) 以降で導入された警告は抑制されます。 既定では、/Wv では現在のコンパイラ バージョン番号が使用され、警告は抑制されません。 コンパイラ バージョンによってどの警告が抑制されるかについては、「コンパイラのバージョンによるコンパイラ警告」を参照してください。
/WX コンパイラ警告をすべてエラーとして扱います。 新しいプロジェクトの場合、すべてのコンパイルで /WX を使用することをお勧めします。すべての警告を解決することで、見つけにくいコードの欠陥を最小限に抑えることができます。

リンカーにも /WX オプションがあります。 詳細については、「/WX (リンカー警告をエラーとして扱う)」を参照してください。

以下のオプションは、相互に排他的です。 このグループから指定された最後のオプションが、適用されるオプションとなります。

オプション 説明
/w1nnnn

/w2nnnn

/w3nnnn

/w4nnnn
nnnn によって指定した警告番号の警告レベルを設定します。 これらのオプションを使うと、特定の警告レベルを設定する場合に、その警告に関するコンパイラ動作を変更できます。 これらのオプションを他の警告オプションと組み合わせて使うと、警告に関して、Visual Studio から提供される既定のコーディング標準ではなく、独自のコーディング標準を適用できます。

たとえば、/w34326 を指定すると、C4326 がレベル 1 ではなくレベル 3 の警告として生成されます。 /w34326 オプションと /W2 オプションの両方を使ってコンパイルする場合、警告 C4326 は生成されません。
/wdnnnn nnnn で指定したコンパイラの警告を抑制します。

たとえば、/wd4326 ではコンパイラの警告 C4326 を抑制します。
/wennnn nnnn で指定したコンパイラの警告をエラーとして扱います。

たとえば、/we4326 を指定すると、警告番号 C4326 がコンパイラによってエラーとして扱われます。
/wonnnn nnnn で指定したコンパイラの警告を 1 回だけ報告します。

たとえば、/wo4326 を指定すると、警告 C4326 が、コンパイラによって最初に検出された 1 回だけ報告されます。

プリコンパイル済みヘッダーを作成するときに警告オプションを使うと、それらの設定が保持されます。 プリコンパイル済みヘッダーを使うと、それらの同じ警告オプションが再度有効になります。 プリコンパイル済みヘッダーの警告オプションをオーバーライドするには、コマンド ラインで別の警告オプションを設定します。

特定のソース ファイルで、#pragma warning ディレクティブを使用して、コンパイル時に報告される警告のレベルを制御できます。

ソース コード内の warning pragma ディレクティブは、/w オプションの影響を受けません。

ビルド エラーに関するドキュメントでは、警告と警告レベルについて説明し、特定のステートメントが意図した通りにコンパイルされない場合がある理由を示しています。

Visual Studio 開発環境でコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。

  2. /W0/W1/W2/W3/W4/Wall/Wv/WX、または /WX- の各オプションを設定するには、[構成プロパティ]>[C/C++]>[全般] の順に選択します。

    • /W0/W1/W2/W3/W4、または /Wall の各オプションを設定するには、[警告レベル] プロパティを変更します。

    • /WX または /WX- オプションを設定するには、[警告をエラーとして扱う] プロパティを変更します。

    • /Wv オプションのバージョンを設定するには、[警告のバージョン] プロパティにコンパイラのバージョン番号を入力します。

  3. /wd または /we オプションを設定するには、[構成プロパティ]>[C/C++]>[詳細] プロパティ ページを選択します。

    • /wd オプションを設定するには、[指定の警告を無効にする] プロパティのドロップダウン コントロールを選択し、[編集] を選択します。 [指定の警告を無効にする] ダイアログの編集ボックスに、警告番号を入力します。 複数の警告を入力する場合は、セミコロン (;) を使って値を区切ります。 たとえば、C4001 と C4010 の両方を無効にするには、「4001;4010」と入力します。 [OK] を選択して変更を保存し、[プロパティ ページ] ダイアログに戻ります。

    • /we オプションを設定するには、[特定の警告をエラーとして扱う] プロパティのドロップダウン コントロールを選択し、[編集] を選択します。 [特定の警告をエラーとして扱う] ダイアログの編集ボックスに、警告番号を入力します。 複数の警告を入力する場合は、セミコロン (;) を使って値を区切ります。 たとえば、C4001 と C4010 の両方をエラーとして扱うには、「4001;4010」と入力します。 [OK] を選択して変更を保存し、[プロパティ ページ] ダイアログに戻ります。

  4. /wo オプションを設定するには、[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。 [追加のオプション] ボックスにコンパイラ オプションを入力します。

  5. [OK] を選択して変更を保存します。

コンパイラ オプションをプログラムによって設定するには

関連項目

MSVC コンパイラ オプション
MSVC コンパイラのコマンド ライン構文