预 __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 |