2016-05-28 31 views
-1

私のコンパイラがC++ 11をサポートしているかどうかを知りたい場合は、__cplusplusを使用してC++バージョンを知りたい場合は、199711と表示されます。__cplusplusはMSVCの199711と同等ですが、C++ 11をサポートしていますか?

このバージョン番号は、コンパイラがC++ 11をサポートしていることを意味しますか?
注:私はVisual Studio 2013 v12.0.40629 Update5を使用しています。

+2

ないデュープリンクされた質問のおそらくhttp://stackoverflow.com/q/14131454/1639256の二倍体。 – Oktalist

+2

特定の言語機能が存在するかどうかをチェックすると、* whole *仕様への準拠を主張するよりも、かなりの成功を収めます。 MSVCはまだC++ 11の全体を実装していないので、 '__cplusplus'のバージョンをバンプすることはできません。 –

+0

/agree Oktalist&@CodyGray - これが、私がhttps://github.com/sloede/cxx11testsとhttps://msdn.microsoft.com/pl-pl/library/hh567368.aspxをリンクした理由です。 IMO C++ 11は、多くのC/C++プラットフォーム(uC/embeddedが含まれています)が完全に*これまで*サポートしていない可能性がある、広範で新しいものです。 – vaxquis

答えて

2

それはMSVC(すなわちその欠けているC++ 11/C++ 14対応)との問題です:

https://connect.microsoft.com/VisualStudio/feedback/details/763051/a-value-of-predefined-macro-cplusplus-is-still-199711l

ありませんので、この値はこれまでMSVCなどとして特定のものを意味するものではありません心配している。いくつかのC++ 11の機能は完璧に動作し、失敗するものもあります。そのため、このC++の99-ish値には意味があります。あなたの最善の策は、特定の機能(下記のcxx11testsのリンクを参照)を確認することです。

さらに詳細:

C++11 on Windows

https://msdn.microsoft.com/pl-pl/library/hh567368.aspx

https://stackoverflow.com/a/27459246/719662

How to Detect if I'm Compiling Code With Visual Studio 2008?

https://github.com/sloede/cxx11tests

関連する問題