预 __cplusplus 处理器宏通常用于报告对特定版本的 C++ 标准的支持,默认情况下,Visual Studio始终返回199711L作为预处理器__cplusplus宏的值。
有些代码依赖__cplusplus宏的真实值,此时需要启用/Zc:__plusplus编译器选项。
/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 |