web-dev-qa-db-ja.com

Eclipse IDEのC ++エラー 'nullptrはこのスコープで宣言されていません'

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

../{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]

実際、昨日までは順調だった。私は今日どこからでもこれらを入手しています。この問題の解決を手伝ってください。

50

最後に何をすべきかを見つけました。プロジェクトプロパティ-> C/C++ビルド->設定-> GCC C++コンパイラ->その他に-std = c ++ 0xコンパイラ引数を追加しました。今すぐ動作します!

しかし、すべてのC++プロジェクトにデフォルトでこのフラグを追加する方法は?誰か?

21

C++ 11のGCCページ によると:

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

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

53
Rob I

G ++ 4.6バージョンを使用している場合は、フラグ-std = c ++ 0xを呼び出してコンパイルする必要があります

g ++ -std = c ++ 0x * .cpp -o output

4
The Beast

それは実際のコンパイラエラーですか、それともコード分析エラーですか?コード分​​析が少し大雑把になり、有効でないエラーを報告する場合があります。

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

また、C++ 11コンパイラでコンパイルしていることを確認しますか?

4
josephthomas

[設定]-> [コンパイラ...]に移動し、「g ++をC++ 0x ISO C++言語標準[std = c ++ 0x]に準拠させる」にフラグを追加します。

3
Leon

別のバージョンのgccを試してみましたが、私の場合はgcc 4.9でした。

0
JobJob

「-c -fmessage-length = 0」の後に「、-std = c ++ 0x」を追加します。プロジェクトプロパティ-> C/C++ビルド->設定-> GCC C++コンパイラ->その他。セパレータとしてカンマ「、」を追加することを忘れないでください。

0
qie