为什么Visual Studio社区2017是C++;标准C&x2B+;98? 昨天我升级到最新的VS社区2017(上一个安装在去年),并想检查C++标准。因此,我运行以下代码检查它,结果是,我有C++98: #include<iostream> using namespace std; int main() { cout << __cplusplus << endl; system("pause"); } #包括 使用名称空间std; int main() { cout

为什么Visual Studio社区2017是C++;标准C&x2B+;98? 昨天我升级到最新的VS社区2017(上一个安装在去年),并想检查C++标准。因此,我运行以下代码检查它,结果是,我有C++98: #include<iostream> using namespace std; int main() { cout << __cplusplus << endl; system("pause"); } #包括 使用名称空间std; int main() { cout,c++,visual-studio,standards,C++,Visual Studio,Standards,默认情况下,\uuuu cplusplus的值暂时故意与当前版本的Visual Studio不一致,以避免破坏现有代码。这并不意味着您的编译器不支持任何C++11(或更新版本)功能 引述自: /Zc:uuu cplusplus 您需要使用/Zc:uu cplusplus开关编译,以查看\uuu cplusplus宏的更新值。我们尝试在默认情况下更新宏,发现在更改\uu cplusplus的值时,许多代码无法正确编译。我们将继续要求使用/Zc:u cplusplus>切换19.xx系列中所有次要版

默认情况下,
\uuuu cplusplus
的值暂时故意与当前版本的Visual Studio不一致,以避免破坏现有代码。这并不意味着您的编译器不支持任何C++11(或更新版本)功能

引述自:

/Zc:uuu cplusplus 您需要使用
/Zc:uu cplusplus
开关编译,以查看
\uuu cplusplus
宏的更新值。我们尝试在默认情况下更新宏,发现在更改
\uu cplusplus
的值时,许多代码无法正确编译。我们将继续要求使用
/Zc:u cplusplus>切换19.xx系列中所有次要版本的MSVC


尝试更改相关的项目属性。例如,您应该使用
/std:c++17
/permissive-
进行构建。不要信任
\uu cplusplus
。VS2017支持c++17很好-您只需要传递正确的命令行选项为了启用它..成功!我按照关于将/Zc:u cplusplus设置为启用的说明进行了操作,我发现我有c++14(201402)。这是执行此操作的指南:如果编译器执行的实际标准是关注的焦点,而不是该宏的值,则可以在解决方案资源管理器中右键单击项目。然后选择
Properties
。然后展开左侧的
C/C++
菜单,然后选择
Language
子菜单你可以选择<代码> +14 + <代码>,<代码> + 17 > <代码>,或者<代码> ++最新。即使C++设置为特定C++标准,编译器也不支持该标准的每一个特征。这里有一个程序可以帮助识别编译器是否支持所需的核心或库特征,如果<我把它当作支票。