昨日、私は最新のVS Community 2017(前のものは昨年インストールされました)にアップグレードし、C++標準を確認したかったのです。そこで、それをチェックする次のコードを実行します。結局のところ、C++ 98があります。
#include<iostream>
using namespace std;
int main()
{
cout << __cplusplus << endl;
system("pause");
}
どの出力
199711
最新のC++標準がないのはなぜですか?
__cplusplus
の値は、既存のコードの破損を回避するために、Visual Studioの現在のバージョンではデフォルトで一時的に意図的に不適合です。コンパイラがC++ 11(またはそれ以降)の機能をサポートしていないという意味ではありません。
MSVCが__cplusplusを正しく報告するようになりました :からの引用
/ Zc:__ cplusplus
/Zc:__cplusplus
マクロの更新された値を表示するには、__cplusplus
スイッチを使用してコンパイルする必要があります。デフォルトでマクロを更新しようとしましたが、__cplusplus
の値を変更すると、多くのコードが正しくコンパイルされないことがわかりました。 19.xxファミリのMSVCのすべてのマイナーバージョンに対して、/Zc:__cplusplus
スイッチの使用を引き続き要求します。