gcc と clang のコンパイルパラメータとしての-std=c++11
との違いは何ですか? と-std=gnu++11
同じ質問?私は C++ と C 標準について知っています。私が興味を持っているのはパラメーターの違いです。c99
gnu99
私はそれがいくつかの拡張機能に関係していることをどこかで読んだことがありますが、どの拡張機能と、新しいプロジェクトでどちらを選択するかが明確ではありません。
ご存知のとおり、2つのオプションの違いは、C++標準に違反/拡張するGNU拡張機能が有効になっているかどうかです。GNUC++拡張機能についてはここで説明します。また、C++プログラムでほとんどのGNUC拡張機能(ここで説明)を使用することもできます。ここ-Wpedantic
でGCCオプションについて読むことも役立ちます。
-std=c++11
一部の拡張機能は、標準と矛盾しない限り、を使用しても有効である可能性があることに注意してください。たとえば、MinGWコンパイラを使用する場合、動作するための拡張機能が必要Boost.Lexical_Cast
です。ただし、それらのいずれも使用しない限り、最大限の移植性を実現するために、拡張機能を使用せずに標準に固執することをお勧めします。これは、コンパイラを変更せざるを得ない場合に便利です。