2012-02-15 20 views
8

現在、私はWindows環境でC++を使用しています。私はVisual Studio 2008 Service Pack 1を使用しています。私はどのバージョンのC++を使用していますか?

C++11について知るまで、私はC++バージョンについて考えたことはありません。

  1. 私はどのバージョンのC++を使用しているか知る方法を教えてください。

  2. 私がVisual Studioを持っていない場合は、TCのような他のコンパイラを使用してC++コードをコンパイルすることができます。その場合、どのようにしてコンパイラがどのバージョンのC++を使用しているかを知ることができます。

  3. プログラミングコンセプトについては連続したC++バージョンで変更されていますか、または言語デザインでのみ変更されていますか?

+4

もうC++ 0xはありません。それは単なるC++ 11です。 –

+3

C++ 03(またはVS08のどの部分もサポートしています)を使用しています。それぞれのコンパイラのドキュメントを見て、それぞれがサポートするC++のバージョンを確認する必要があります。実際には多くの人がバージョンの「ほとんどの機能」をサポートしていて、標準に完全に準拠しているわけではありません。 –

+1

@SethCarnegie:公正であるように、 'export'の削除により、GCCとClangが完全なC++ 11準拠(もちろんバグはない)に達するでしょう。マイクロソフトではおそらく、2フェーズルックアップを実装することはないため、実装するC++ 11の機能の数に関係なく、コンフォーマンスに到達することはありません。 –

答えて

8

バージョンチェックほど簡単ではありません。

一部のC++ 11をサポートするすべてのコンパイラは、の異なる C++ 11のサブセットをサポートしています。明白な理由から、コンパイラはまだC++ 11の完全な準拠をアドバタイズしていません。

C++ 11仕様では、201103Lの値を持つ定義済みマクロ__cplusplusを定義する必要があります。ただし、にはにこのマクロだけを使用することはできません。実際のコードではありません。

コンパイラとそのコンパイラのバージョンを使用している場合は、コンパイラ固有のマクロを使用してください。または、Boost.Configを使用すると、特定の機能がサポートされているかどうかを検出するのに役立ちます。

+1

Visual Studioに計画されているC++ 11およびC++ 14の機能のロードマップがあります(https://blogs.msdn)。com/b/somasegar/archive/2013/06/28/cpp-conformance-roadmap.aspx?Redirected = true – Chris

1

Visual Studio 2008?あなたはC++ 11を忘れることができます。 Visual Studio 2010にはC++ 11がいくつかありますが、バグです。 Visual Studio 2012の一部の機能にはC++ 11が優れていますが、その他の機能はありません。 Visual Studio 2013にはバリデーションテンプレートやその他の機能が新たにサポートされています。 しかし、VSはC++ 11サポートでgccなど他のコンパイラの後ろにあります。 これらすべてのバージョンの無料のExpress Editionをダウンロードできます。

関連する問題