C++-fout ‘nullptr is niet gedeclareerd in dit bereik’ in Eclipse IDE

Ik gebruik Eclipse Helios en ik heb g++-4.6 geïnstalleerd. Ik hoop dat ik me niet vergis dat g++4.6 C++ 11-functies implementeert. Ik heb een C++-project gemaakt dat de trefwoorden nullptr en auto gebruikt. De build geeft de volgende fouten:-

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

Eigenlijk bouwde het tot gisteren prima. Ik krijg deze vandaag uit het niets. Help me dit probleem op te lossen.


Antwoord 1, autoriteit 100%

Volgens de GCC-pagina voor C++11:

Als u C++0x-ondersteuning wilt inschakelen, voegt u de opdrachtregelparameter -std=c++0x toe aan uw g++-opdrachtregel. Of, om GNU-extensies in te schakelen naast C++0x-extensies, voeg -std=gnu++0x toe aan uw g++-opdrachtregel. GCC 4.7 en hoger ondersteunen ook -std=c++11 en -std=gnu++11.

Heb je gecompileerd met -std=gnu++0x?


Antwoord 2, autoriteit 37%

Eindelijk gevonden wat te doen. Het -std=c++0x compiler-argument toegevoegd onder Project Properties -> C/C++ Build -> Instellingen -> GCC C++-compiler -> Diversen. Het werkt nu!

Maar hoe voeg je deze vlag standaard toe aan alle C++-projecten? Iemand?


Antwoord 3, autoriteit 11%

U gebruikt g++ 4.6-versie, u moet de vlag -std=c++0x aanroepen om te compileren

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


Antwoord 4, autoriteit 7%

Is dat een echte compilerfout of een code-analysefout? Soms kan de code-analyse een beetje schetsmatig zijn en ongeldige fouten rapporteren.

Om codeanalyse voor het project uit te schakelen, klikt u met de rechtermuisknop op uw project in de Project Explorer, klik op Eigenschappen en ga vervolgens naar het tabblad C / C++ Algemeen en vervolgens CODE-analyse. Klik vervolgens op “Projectinstellingen gebruiken” en schakel deze uit die u niet wenst.

Weet u zeker dat u zich vasthoudt met de C++ 11-compiler?


Antwoord 5, Autoriteit 5%

Ga naar Instellingen – & GT; Compiler…
En voeg vlag toe aan “Have G ++ Volg de komende C++ 0x ISO C++ Taalstandaard [STD = C++ 0x]


Antwoord 6

Ik voeg de “, -std = C++ 0x” toe na “-C-Fessage-length = 0”, onder projecteigenschappen – & GT; C / C++ Build – & GT; Instellingen – & GT; GCC C++ Compiler – & GT; Diversen. Vergeet niet om de komma “,” als de seperator toe te voegen.


Antwoord 7

Proberen met een andere versie van GCC werkte voor mij – GCC 4.9 in mijn geval.

Other episodes