/Zc:__cplusplus
(启用更新的 __cplusplus
宏)
/Zc:__cplusplus
编译器选项启用 __cplusplus
预处理器宏以针对最新的 C++ 语言标准支持报告更新的值。 默认情况下,Visual Studio 始终为 __cplusplus
预处理器宏返回值 199711L
。
语法
]$
注解
__cplusplus
预处理器宏通常用于报告 C++ 标准特定版本的支持。 因为很多现有代码需要此宏的值与 199711L
匹配,所以编译器不会更改此宏的值,除非通过使用 /Zc:__cplusplus
编译器选项进行显式选择。 从 Visual Studio 2017 版本 15.7 开始便已提供 /Zc:__cplusplus
选项,该选项在默认情况下处于禁用状态。 在早期版本的 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 的标准选项。 从 Visual Studio 2019 版本 16.11 开始,/std:c++20
选项可用。 /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-
添加到“附加选项:”窗格中。