Ada*_*ard 1 c++ visual-studio visual-c++ c++11
我正在尝试在我的项目中运行 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";
Run Code Online (Sandbox Code Playgroud)
/Zc:__cplusplus需要为__cplusplus宏打开正确的版本控制。
但是请注意,编译器不支持 C++98、C++03 或 C++11 的标准开关。所以它只适用于/std:c++14和以后。
正如 Ted Lyngmo 所提到的,还有_MSVC_LANGmarco(这不需要上述编译器标志):
_MSVC_LANG定义为整数文字,指定编译器所针对的 C++ 语言标准。它仅在编译为 C++ 的代码中设置。默认情况下,或/std:c++14指定编译器选项时,宏是整数文字值 201402L 。如果/std:c++17指定了编译器选项,则宏设置为 201703L 。当/std:c++latest指定选项时,它被设置为更高的、未指定的值。否则,宏是未定义的。
有关此行为和新开关的更多背景信息,请参阅此 Visual C++博客文章。
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |