2012-04-05 23 views
44

Eclipse Heliosを実行していて、g ++ - 4.6がインストールされています。 g ++ 4.6がC++ 11の機能を実装しているとは間違いありません。 nullptrとautoキーワードを使用するC++プロジェクトを作成しました。ビルドには、次のエラーを与える: -C++エラーEclipse IDEの 'nullptrがこのスコープで宣言されていませんでした'

../{filename}.cpp:13:13: error: ‘nullptr’ was not declared in this scope 

../{filename}.cpp:14:2: warning: ‘auto’ will change meaning in C++0x; please remove it [-Wc++0x-compat] 

は、実際には、昨日まで罰金構築されました。今日はどこからでもこれらを手に入れています。この問題を解決するのを手伝ってください。

+0

g ++の正確なバージョンとはどのようなコンパイルオプションを使用していますか? –

+1

この挙動を示すコードサンプルを投稿してください。ここでは、紅茶の葉を読もうとしていません。 –

+0

私はg ++ 4.6を使用しており、次のようなコード行を想像しています: - int * ptr = nullptr; auto x = 123; –

答えて

16

最終的に何をすべきかを知りました。プロジェクトプロパティ - > C/C++ビルド - >設定 - > GCC C++コンパイラ - >その他の項目に-std = C++ 0xコンパイラ引数を追加しました。それは今働きます!

しかし、このフラグをデフォルトですべてのC++プロジェクトに追加するにはどうすればよいですか?誰ですか?

+0

ウィンドウ - >環境設定 - > C/C++ - >ビルド - >設定を見ましたか? – josephthomas

+1

私は悲しいことに、このオプションを持っていません。 – user592748

+0

この状況をcmakeで処理するにはどうすればよいですか? – UserK

4

これは実際のコンパイラエラーかコード解析エラーですか?いくつかのコード解析は少しスケッチであり、有効でないエラーを報告することがあります。

プロジェクトのコード解析をオフにするには、プロジェクトエクスプローラでプロジェクトを右クリックし、[プロパティ]をクリックしてから、[C/C++全般]タブ、[コード解析]の順に進みます。次に、[プロジェクト設定を使用する]をクリックし、不要なものを無効にします。

また、C++ 11コンパイラでコンパイルしていますか? GCC page for C++11によると

+2

downvoteに対抗するためにUpvoted。これはほぼ確実に問題です。 –

+0

ありがとうございます。私はこの問題に何度もぶつかってきたので、言及する価値があると思った。 – josephthomas

+0

Eclipseプロジェクトプロパティの[C/C++全般]タブにコード分析項目が表示されません。私はg ++ 4.6を使用しています。 HopeはC++ 11の機能、特にnullptrとautoを実装しています。ありがとう。 –

43

-std = C++ 0xをごグラム++コマンドラインにコマンドラインパラメータを追加し、C++ 0xのサポートを有効にします。または、C++ 0x拡張に加えてGNU拡張を有効にするには、g ++のコマンドラインに-std = gnu ++ 0xを追加します。 GCC 4.7以降では-std = C++ 11と-std = gnu ++ 11もサポートしています。

-std=gnu++0xでコンパイルしましたか?

+2

-std = gnu ++ 0xと-std = C++ 0xコマンドラインパラメータを追加しようとしましたが、同じ問題が発生しました。 Project Properties - > C/C++ Build - > Discovery Options - > Compiler Invocation Argumentsの下に追加しました。それは正しい場所ですか? –

+0

おそらく、他の答えが実際にはより根底にあるように聞こえるかもしれません。 :) –

+0

こんにちは、私は今、一つのことに気づいた。 IDEは、プロジェクトプロパティ - > C/C++ビルド - >ディスカバリオプション - >コンパイラ呼び出し引数の下にコンパイラ引数-std = C++ 0xを追加しましたが、コンパイラ引数を取りません。だから私はコマンドラインビルド 'g ++ "../CPP.cpp" -std = gnu ++ 0x -std = C++ 0x'をターミナルで試してみました。正常に実行されるバイナリが生成されます。したがって、IDEは指定されたコンパイラオプションを考慮しません。生成されたメイクファイルには、コンパイラの引数-std = C++ 0xは付いていません。 IDEがコンパイラの引数を考慮するように強制する方法がわからない! –

0

あなたは= C++ 0xのコンパイルに使用すると、フラグ-stdを起動する必要があり、G ++ 4.6バージョンを使用している

G ++ -std = C++ 0xの* .cppファイル-o出力

[設定]を
3

ゴー - >コンパイラ... そして、フラグを追加するために、-std = "G ++今後C++ 0xのISO C++言語の標準的な[STD = C++ 0xの]

0

に従ってください持っている私が追加"プロジェクトのプロパティの下にある "c -fmessage-length = 0"の後の "C++ 0x" C/C++のビルド - >設定 - > GCC C++コンパイラ - >その他。コンマを追加するのを忘れないでください "、" seperatorとして。

0

gccの別のバージョンで試してみると、私の場合はgcc 4.9となりました。

関連する問題