提问者:小点点

Visual studio for C++中支持的语言__CPlusPlus显示为C++98


我正在尝试在我的项目中运行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";```

共1个答案

匿名用户

需要/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++最新选项时,它将被设置为一个更高的未指定值。 否则,宏未定义。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(visual|studio|c++|中|支持|语言|cplusplus|显示|c++98)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?