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