昨天我升级到了最新的VS Community 2017(去年安装了上一个),并想检查C ++标准。因此,我运行以下代码对其进行检查,事实证明,我使用的是C ++ 98:
#include<iostream>
using namespace std;
int main()
{
cout << __cplusplus << endl;
system("pause");
}
哪个输出
199711
为什么我没有最新的C ++标准?
答案 0 :(得分:46)
默认情况下,对于当前版本的Visual Studio,__cplusplus
的值在默认情况下暂时暂时不符合标准,以免破坏现有代码。这并不意味着您的编译器不支持任何C ++ 11(或更新版本)功能。
引用MSVC now correctly reports __cplusplus:
/ Zc:__ cplusplus
您需要使用
/Zc:__cplusplus
开关进行编译,以查看__cplusplus
宏的更新值。我们尝试默认情况下更新宏,但发现更改__cplusplus
的值时,很多代码无法正确编译。对于19.xx系列的所有次要版本的MSVC,我们将继续要求使用/Zc:__cplusplus
开关。