我正在尝试在我的项目中运行 C++11。我添加编译器标志/std:c++11
到编译器,但是当我检查版本并将其打印出来时,它显示为 C++98。这是在 Visual Studio 2019 中。
这是我用来打印语言的内容,它显示为 C++98:
if (__cplusplus == 201703L) std::cout << "C++17\n";
else if (__cplusplus == 201402L) std::cout << "C++14\n";
else if (__cplusplus == 201103L) std::cout << "C++11\n";
else if (__cplusplus == 199711L) std::cout << "C++98\n";
else std::cout << "pre-standard C++\n";
std::cout << "C++ langauge supported = " << __cplusplus << "\n";
/Zc:__cplusplus需要打开正确的版本控制__cplusplus
macro.
但请注意,编译器不支持 C++98、C++03 或 C++11 的标准开关。所以它只适用于/std:c++14
然后。
正如 Ted Lyngmo 提到的,还有_MSVC_LANG
marco(这不需要上面的编译器标志):
_MSVC_LANG
定义为整数文字,指定编译器所针对的 C++ 语言标准。它仅在编译为 C++ 的代码中设置。该宏默认为整数文字值 201402L,或者当/std:c++14
指定了编译器选项。如果以下情况,宏设置为 201703L/std:c++17
指定了编译器选项。当它被设置为一个更高的、未指定的值时/std:c++latest
选项已指定。否则,宏未定义。
请参阅此 Visual C++博客文章有关此行为和新开关的更多背景信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)