为 C++17 构建时,__cplusplus 在 Visual Studio 2022 中显然未正确设置?

Swi*_*ank 3 visual-c++

我的代码进行了以下测试,以保护仅适用于 C++11 或更高版本的代码。

cl尽管用 调用,但它的计算结果为 0 /std:c++17

#if __cplusplus >= 201103
Run Code Online (Sandbox Code Playgroud)

我在 Windows 11 上的 Microsoft Visual Studio Community 2022(64 位)中看到了这一点。

Swi*_*ank 5

右键单击相关项目,然后设置属性-->C/C++-->命令行-->附加选项/Zc:__cplusplus

我最好的猜测是,他们制定了这个奇怪的错误功能来服务“错误报告”,==一旦他们增加版本号,测试原始值的代码就会失败。

有关更多信息,请访问https://learn.microsoft.com/en-us/cpp/build/reference/zc-cplusplus?view=msvc-170