为什么Visual Studio社区2017 C++标准C++ 98?

eag*_*eye 42 c++ standards visual-studio

昨天我升级到最新的VS社区2017(前一个是去年安装的),并想检查C++标准.所以我运行以下代码来检查它,结果证明,我有C++ 98:

#include<iostream>
using namespace std;
int main()
{
    cout << __cplusplus << endl;
    system("pause");
}
Run Code Online (Sandbox Code Playgroud)

哪个输出

199711

为什么我没有最新的C++标准?

代码,输出和vs版本的屏幕截图

小智 45

__cplusplus对于当前版本的Visual Studio,默认情况下,该值暂时是故意不符合的,以避免破坏现有代码.这并不意味着您的编译器不支持任何C++ 11(或更新)功能.

MSVC引用现在可以正确报告__cplusplus:

/ ZC:__ CPLUSPLUS

您需要使用/Zc:__cplusplus开关进行编译以查看__cplusplus宏的更新值.我们尝试默认更新宏,并发现当我们更改值时,很多代码无法正确编译__cplusplus./Zc:__cplusplus对于19.xx系列中的所有次要版本的MSVC,我们将继续要求使用该开关.

  • 如果编译器强制执行的实际标准是关注的焦点,而不是该宏的值,则可以在解决方案资源管理器中右键单击您的项目.并选择"属性".然后展开左侧的"C/C++"菜单,选择"语言"子菜单.在那里你可以选择`++ 14`,`++ 17`或`++ latest`. (7认同)
  • 成功!我按照设置/ Zc:__ cplusplus的说明启用了,我看到我有c ++ 14(201402).这是执行此操作的指南:https://docs.microsoft.com/en-us/cpp/build/reference/zc-cplusplus?view = vs-2017 (2认同)