it-swarm.com.de

C++ - Fehler 'nullptr wurde nicht in diesem Bereich deklariert' in Eclipse IDE

Ich verwende Eclipse Helios und habe g ++ - 4.6 installiert. Ich hoffe, dass ich nicht falsch liege, dass g ++ 4.6 C++ 11-Features implementiert. Ich habe ein C++ - Projekt erstellt, das die Schlüsselwörter nullptr und auto verwendet. Der Build gibt die folgenden Fehler aus: -

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

Eigentlich hat es bis gestern gut gebaut. Ich bekomme diese heute aus dem Nichts. Bitte helfen Sie mir, dieses Problem zu lösen.

48

Endlich herausgefunden, was zu tun ist. Das Compiler-Argument -std = c ++ 0x wurde unter Projekteigenschaften -> C/C++ Build -> Einstellungen -> GCC C++ - Compiler -> Sonstiges hinzugefügt. Es funktioniert jetzt!

Aber wie wird dieses Flag standardmäßig für alle C++ - Projekte hinzugefügt? Irgendjemand?

20

Laut der GCC-Seite für C++ 11 :

Fügen Sie der g ++ - Befehlszeile den Befehlszeilenparameter -std = c ++ 0x hinzu, um die Unterstützung von C++ 0x zu aktivieren. Um die Erweiterung GNU zusätzlich zu den C++ 0x-Erweiterungen zu aktivieren, fügen Sie der g ++ - Befehlszeile -std = gnu ++ 0x hinzu. GCC 4.7 und höher unterstützen auch -std = c ++ 11 und -std = gnu ++ 11.

Hast du mit -std=gnu++0x kompiliert?

49
Rob I

Ist das ein tatsächlicher Compilerfehler oder ein Code Analysis-Fehler? Manchmal kann die Code-Analyse etwas skizzenhaft sein und nicht gültige Fehler melden.

Um die Codeanalyse für das Projekt zu deaktivieren, klicken Sie im Projektexplorer mit der rechten Maustaste auf Ihr Projekt, klicken Sie auf Eigenschaften, wechseln Sie zur Registerkarte C/C++ - Allgemein und dann zur Codeanalyse. Klicken Sie dann auf "Projekteinstellungen verwenden" und deaktivieren Sie diejenigen, die Sie nicht wünschen.

Sind Sie sicher, dass Sie mit dem C++ 11-Compiler kompilieren?

4
josephthomas

Sie verwenden die g ++ 4.6-Version. Zum Kompilieren müssen Sie das Flag -std = c ++ 0x aufrufen

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

3
The Beast

Gehen Sie zu Einstellungen -> Compiler ....__ und fügen Sie ein Flag zu "Haben Sie g ++ dem kommenden C++ 0x-Standard folgen? 

3
Leon

Der Versuch mit einer anderen Version von gcc hat für mich funktioniert - gcc 4.9 in meinem Fall.

0
JobJob

Ich füge ", -std = c ++ 0x" nach "-c -fmessage-length = 0" , unter Projekteigenschaften -> C/C++ Build -> Einstellungen -> GCC C++ - Compiler -> Verschiedenes hinzu. Vergessen Sie nicht, das Komma "," als Trennzeichen hinzuzufügen.

0
qie