/Zc:__cplusplus (更新されたマクロの有効化 __cplusplus )

/Zc:__cplusplusコンパイラオプションを使用すると、 __cplusplus 最新の C++ 言語標準サポートの更新された値をプリプロセッサマクロで報告できます。 既定では、Visual Studio は常に 199711L プリプロセッサマクロの値を返し __cplusplus ます。

構文

/Zc:__cplusplus[-]

注釈

__cplusplusプリプロセッサマクロは、一般的に、特定のバージョンの C++ 標準のサポートをレポートするために使用されます。 このマクロの一致の値に依存する既存のコードが多数存在するため 199711L 、コンパイラオプションを使用して明示的に選択しない限り、コンパイラはマクロの値を変更しません /Zc:__cplusplus 。 この /Zc:__cplusplus オプションは Visual Studio 2017 バージョン15.7 以降で使用でき、既定ではオフになっています。 以前のバージョンの Visual Studio、既定では、または /Zc:__cplusplus- が指定されている場合、Visual Studio は 199711L プリプロセッサマクロの値を返し __cplusplus ます。 オプションでは、が有効になってい /permissive- ません /Zc:__cplusplus

この /Zc:__cplusplus オプションが有効になっている場合、マクロによって報告される値は __cplusplus バージョンオプションの設定によって異なり /std ます。 この表では、このマクロに可能な値を示します。

/Zc:__cplusplus オプション /std オプション __cplusplus
Zc:__cplusplus /std:c++14 (既定値) 201402L
Zc:__cplusplus /std:c++17 201703L
Zc:__cplusplus /std:c++20 202002L
Zc:__cplusplus /std:c++latest テキストの表示
Zc:__cplusplus- 無効に 任意の値 199711L
指定なし 任意の値 199711L

コンパイラでは、C++ 98、C++ 03、または C++ 11 の標準オプションはサポートされていません。 この /std:c++20 オプションは Visual Studio 2019 バージョン16.11 以降で使用できます。 オプションを指定したの値は、 __cplusplus/std:c++latest Visual Studio のバージョンによって異なります。 __cplusplus現在のバージョンの Visual Studio でサポートされている、サポートされている最高の standard 値より少なくとも1つは、常に1つです。

コンパイラツールセットの変更を詳細に検出するには、定義済みのマクロを使用し _MSC_VER ます。 この組み込みのマクロの値は、Visual Studio 2017 以降のバージョンのツールセットが更新されるたびに増分されます。 _MSVC_LANG定義済みマクロは、 /Zc:__cplusplus オプションが有効か無効かにかかわらず、標準バージョンを報告します。 を有効にすると /Zc:__cplusplus 、の __cplusplus 値はと同じに _MSVC_LANG なります。

このコンパイラ オプションを Visual Studio で使用するには

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

  2. [構成プロパティ][C/C++][コマンド ライン] プロパティ ページを選択します。

  3. /Zc:__cplusplus/Zc:__cplusplus- [/Zc:__cplusplus ] ペインにまたはを追加します。

関連項目

互換性
(言語の標準バージョンの指定)
定義済みマクロ