Share via


/Zc:__cplusplus (啟用更新 __cplusplus 的宏)

編譯 /Zc:__cplusplus 程式選項可讓 __cplusplus 預處理器宏報告最新 C++ 語言標準支援的更新值。 根據預設,Visual Studio 一律會傳 __cplusplus 回預處理器宏的值 199711L

語法

/Zc:__cplusplus[-]

備註

__cplusplus預處理器宏通常用來報告特定 C++ 標準版本的支援。 由於許多現有的程式碼似乎相依于這個宏比 199711L 對的值,因此除非您使用 /Zc:__cplusplus 編譯器選項明確加入宣告,否則編譯器不會變更宏的值。 此選項 /Zc:__cplusplus 可從 Visual Studio 2017 15.7 版開始使用,且預設為關閉。 在舊版的 Visual Studio 中,根據預設,或 /Zc:__cplusplus- 如果已指定,Visual Studio 會傳 __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 的最高標準值。

若要更精細地偵測編譯器工具組的變更,請使用 _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 (一致性)
/std (指定語言標準版本)
預先定義巨集