/Zc:__cplusplus
(更新された __cplusplus
マクロの有効化)
/Zc:__cplusplus
コンパイラ オプションを指定すると、サポートされる最近の C++ 言語標準の更新値を通知する __cplusplus
プリプロセッサ マクロが有効になります。 Visual Studio では、__cplusplus
プリプロセッサ マクロに対して、既定で常に 199711L
値を返します。
構文
/Zc:__cplusplus
[-
]
解説
__cplusplus
プリプロセッサ マクロは、特定のバージョンの C++ 標準をサポートしているかどうかを通知するために一般に使用されます。 既存のコードの多くは、このマクロの値が 199711L
に一致することに依存しているようなので、明示的に /Zc:__cplusplus
コンパイラ オプションの使用をオプトインしない限り、コンパイラでこのマクロの値は変更されません。 /Zc:__cplusplus
オプションは、Visual Studio 2017 バージョン 15.7 以降で使用できます。既定ではオフになっています。 Visual Studio の以前のバージョンでは、既定で、または /Zc:__cplusplus-
が指定されている場合、__cplusplus
プリプロセッサ マクロに対して 199711L
の値を返します。 /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 以降で使用できます。 /std:c++latest
オプションが指定された __cplusplus
の値は、Visual Studio のバージョンに依存します。 お使いの Visual Studio のバージョンでサポートされている __cplusplus
のサポートされている最も高い標準値よりも常に 1 以上大きい値である必要があります。
コンパイラのツールセットの変更をより細かく検出するには、定義済みの _MSC_VER
マクロを使用します。 この組み込みのマクロの値は、Visual Studio 2017 以降のバージョンのツールセットが更新されるたびに増分されます。 _MSVC_LANG
の定義済みのマクロでは、/Zc:__cplusplus
オプションが有効でも無効でも、標準のバージョンを通知します。 /Zc:__cplusplus
が有効な場合、__cplusplus
の値は _MSVC_LANG
と同じです。
このコンパイラ オプションを Visual Studio で使用するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
/Zc:__cplusplus
または/Zc:__cplusplus-
を [追加オプション] ペインに追加します。