g ++でC ++ 11を使用するにはどうすればよいですか?


21

現在、すべてのコードをgeditで入力し、ターミナルを使用してプログラムをコンパイルしています。そうするために、私は入力しています:

$ g++ main.cpp -o main
$ ./main

そして、これは機能しています。ただし、C ++ 11は使用していません。C ++のバージョンを確認し、C ++ 11を使用してターミナル経由でコンパイルするにはどうすればよいですか?



あなたはそのたびに私は、自動的にC ++ 11または訴えcomplieそれをコンパイルするので、常に-std = C ++ 11を含めるか、または設定がある必要がありますか
フランス語マイク

回答:


53

これは、-std=c++11フラグを使用して実行できます。以下に例を示します。

g++ -std=c++11 -Wall -Wextra -Werror main.cpp -o main

このモードを用いて選択することができる-std=c++11コマンドラインフラグ、または-std=gnu++11同様GNU拡張を有効にする。(ソース

以下の他のフラグの説明を参照してください。少なくともこれらのエラーフラグを使用すると、長期的にはあなたの人生が楽になると私は深く信じています。スクリプトが何をするのかをよく理解したら、結果を得るために必要な場合は警告を省略できますが、それは標準ではありません。これがお役に立てば幸いです。読書を始めるのに最適な場所です。

  • -Wall —すべての主要な警告を有効にします。
  • -Wextra —他の重要な警告を有効にします。
  • -Werror—すべての警告をエラーにすると、警告が報告された場合にコンパイルが失敗します。

ソース:

  1. GCC:オプションの概要
  2. GCC:警告を要求または抑制するオプション

5
ありがとう!そのコマンドで「-Wall」と「-Werror」の目的を説明してください。

1
私の答えに追加しました。
Videonauth

7
@ dhaneku.b:ドキュメントを読んでみませんか?それはそこにあるものです。
モニカとの軽さレース

9
@LightnessRacesinOrbit Videonauthが元のコマンドラインの例に含まれていなかったにもかかわらず、Videonauthがそれらを追加することが重要である理由をドキュメントが必ずしも説明するわけではないため、 -Werror」に「-std = c ++ 11」が含まれる場合があります。(はい、この後者の答えは「特別なものではありません」ですが、ドキュメントはそれを言うつもりはなく、ドキュメントに記載されていない奇妙なコーナーケースがたくさんあります。「証拠の欠如はありません」 t不在の証拠」など、すべて
RM

2
このモードは、-std=c++11コマンドラインフラグで選択するか-std=gnu++11、GNU拡張機能を有効にすることもできます。(ソース
-Videonauth
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.