我正在尝试在我的项目中运行C++11。 我将编译器标志/std:C++11添加到编译器,当我检查版本并将其打印出来时,它显示为C++98。 当我想使用C++11及以上版本时。 这是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
宏打开正确的版本控制。
但是请注意,编译器不支持C++98,C++03或C++11的标准开关。 因此它只适用于/std:C++14
和更高版本。
正如Ted Lyngmo提到的,还有_msvc_lang
marco(这不需要上面的编译器标志):
_msvc_lang
定义为整数文本,指定编译器所针对的C++语言标准。 它只在编译为C++的代码中设置。 默认情况下,或者在指定/std:C++14
编译器选项时,宏为整数文本值201402L。 如果指定了/std:C++17
编译器选项,则将宏设置为201703L。 当指定/std:C++最新
选项时,它将被设置为一个更高的未指定值。 否则,宏未定义。