3

実行すると

g++ main.cpp 

出力を取得します

main.cpp:9:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:10:15: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:11:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:12:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:13:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]

今私が走れば

g++ -std=c++11 main.cpp

警告は消えますが、既に有効になっているものを明示的に指定する必要はありません。簡単な bash エイリアスを作成するのをためらっています。記憶が正しければ、gcc はすでに一種のエイリアスであるためです。とにかくそれを行うのは安全ですか、それとも設定ファイルなどでこれを修正する正しい方法はありますか? デフォルトのリポジトリを使用して、Ubuntu 12.10 x64 で実行しています。

4

6 に答える 6

3

「すでに有効になっているものを明示的に指定する必要はありません」 - 実際、それはエネルギー消費量が最も少ない方法であることがほぼ確実です。出力をパイプすることからgrep -v、コンパイラ ツールチェーンの再コーディングと再コンパイルに至るまで、他にも多くの可能性がありますが、そのフラグをコマンド ラインに追加するだけでは難しいでしょう。

また、余分な文字やエイリアスの競合の可能性が心配な場合は、いつでもエイリアスg11または類似のものを呼び出すことができます。覚えておかなければならないのは、正しい名前を使用することだけですが、脊柱を持つ生物は、それを処理するのに十分なほど十分に進歩している必要があります:-)

于 2012-12-02T21:55:54.343 に答える
2

GCC ファミリのコンパイラ (gcc、g++ など) は、-wすべての警告を無効にするスイッチを受け入れますが、そうしたくないでしょう。

于 2012-12-02T21:51:10.283 に答える
1

エイリアスを実行することは確かに安全な方法です。これとまったく同じ理由で、.bashrcファイルに以下を追加しましたが、問題なく動作しています。

alias g++='g++ -std=c++11'
于 2013-01-17T22:21:01.783 に答える
0

これは GCC に固有のものであり、明示的に多くのことを伝える必要があります。IDE を使用している場合は、プロジェクト オプションに移動して -std=c++11 を指定します。それ以外の場合は、C++03 準拠のコードを作成することをお勧めします。

于 2013-01-07T08:07:44.880 に答える
0

あなたがコードを書くことができるなら (なぜなら、私たちは皆 C++11 を楽しみにしています) 、今のところフラグを追加する必要があります。メイクファイルでそれを行うか、ツーライナーで次のようなことを行うことができます/usr/local/bin/g++:

#!/bin/bash
/usr/bin/g++ -std=c++11 "$@"

g++パスの前にあることで、デフォルトのバイナリに「勝ち」、それを呼び出します。

便利ですが、コードが移植できなくなる可能性があります。トレードオフ。

于 2012-12-02T21:55:42.157 に答える
0

-std=c+11ビルド システムまたは選択した IDE で指定します。ここでは、さまざまなビルド システムについて学習できます。

于 2012-12-03T01:14:31.813 に答える