1. ホーム
  2. c++

[解決済み] std=c++11と-std=gnu++11の違いは何ですか?

2022-04-27 03:32:42

質問

とはどのような違いがあるのでしょうか? -std=c++11-std=gnu++11 をgccやclangのコンパイルパラメータとして使うことはできますか?同じ質問で c99gnu99 ? C++とCの規格については知っていますが、私が興味を持ったのはパラメータの違いです。

どこかのサイトで、いくつかの拡張機能が関係していると読んだことがあるのですが、どれがそうなのか、新しいプロジェクトでどちらかを選ぶにはどうしたらいいのか、私にはよくわかりません。

解決方法は?

ご自身でもお分かりのように、この2つのオプションの違いは、C++の標準に違反/拡張するGNU拡張を有効にするかしないかです。GNU C++の拡張は次のように記述されています。 こちら . また、ほとんどのGNU C拡張機能( こちら ) をC++プログラムで使用することができます。 について読んでおくと便利でしょう。 -Wpedantic GCCオプション ここで .

を使用しても、一部の拡張機能は有効であることに注意してください。 -std=c++11 標準に反しない限りは。たとえば、MinGWコンパイラを使うとき、動作するように拡張機能が必要です。 Boost.Lexical_Cast . しかし、それらを一切使用しない限りは、拡張機能なしの標準にこだわった方が、移植性を最大限に高めることができるのです。これは、コンパイラを変更せざるを得なくなったときに便利かもしれません。