2012-04-05 21 views
44

Sto eseguendo Eclipse Helios e ho installato g ++ - 4.6. Spero di non aver sbagliato che g ++ 4.6 implementa le funzionalità di C++ 11. Ho creato un progetto C++ che utilizza le parole chiave nullptr e auto. La build dà i seguenti errori: -Errore C++ 'nullptr non è stato dichiarato in questo ambito' in Eclipse IDE

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

In realtà si stava costruendo bene fino a ieri. Sto ottenendo questi dal nulla oggi. Per favore aiutami a risolvere questo problema.

+0

Qual è la versione esatta di g ++ e quali opzioni di compilazione stai usando? –

+1

Si prega di inviare un esempio di codice che presenti questo comportamento, senza che stiamo cercando di leggere le foglie di tè qui. –

+0

Sto usando g ++ 4.6 e immagino linee di codice come questo: - int * ptr = nullptr; auto x = 123; –

risposta

16

Finalmente ho scoperto cosa fare. Aggiunto l'argomento del compilatore -std = C++ 0x in Proprietà del progetto -> C/C++ Build -> Impostazioni -> GCC C++ Compiler -> Miscellaneous. Ora funziona!

Ma come aggiungere questo flag di default per tutti i progetti C++? Chiunque?

+0

Hai controllato Window -> Preferences -> C/C++ -> Build -> Settings? – josephthomas

+1

Purtroppo non ho questa opzione. – user592748

+0

Come gestisco questa situazione con cmake? – UserK

4

È un errore del compilatore o un errore di analisi del codice? Alcune volte l'analisi del codice può essere un po 'approssimativa e segnalare errori non validi.

Per disattivare l'analisi del codice per il progetto, fare clic con il pulsante destro del mouse sul progetto in Esplora progetti, fare clic su Proprietà, quindi passare alla scheda Generale C/C++, quindi Analisi del codice. Quindi fai clic su "Usa impostazioni progetto" e disabilita quelli che non desideri.

Inoltre, si è sicuri di compilare il compilatore C++ 11?

+2

In suvated per contrastare il downvote. Questo è quasi sicuramente il problema. –

+0

Grazie. Ho incontrato molte volte questo problema, quindi ho pensato che fosse degno di menzione. – josephthomas

+0

Non vedo un elemento di analisi del codice nella scheda Generale C/C++ nelle proprietà del mio progetto Eclipse. Sto usando g ++ 4.6. Spero che implementi le funzionalità di C++ 11, in particolare nullptr e auto. Grazie. –

43

Secondo il GCC page for C++11:

Per abilitare C++ 0x sostegno, aggiungere il parametro della riga di comando -std = C++ 0x alla linea di comando g ++. Oppure, per abilitare le estensioni GNU oltre alle estensioni C++ 0x, aggiungi -std = gnu ++ 0x alla tua riga di comando g ++. GCC 4.7 e versioni successive supportano anche -std = C++ 11 e -std = gnu ++ 11.

Hai compilato con -std=gnu++0x?

+2

Ho provato ad aggiungere -std = gnu ++ 0x e -std = C++ 0x parametri della riga di comando ma ottenendo lo stesso problema. L'ho aggiunto in Proprietà progetto -> C/C++ Build -> Opzioni di rilevamento -> Argomenti di richiamo del compilatore. È il posto giusto? –

+0

Probabilmente, ma sembra che l'altra risposta sia più radicata nella realtà. :) –

+0

Ciao Rob, ho notato una cosa ora. L'IDE non rileva l'argomento del compilatore -std = C++ 0x sebbene l'abbia aggiunto in Proprietà progetto -> C/C++ Build -> Opzioni di rilevamento -> Argomenti di richiamo del compilatore. Così ho provato la riga di comando compilare 'g ++ "../CPP.cpp" -std = gnu ++ 0x -std = C++ 0x' in un terminale e compila bene; produce il binario, che funziona correttamente. Quindi l'IDE non considera l'opzione del compilatore specificata. Il makefile generato non supporta l'argomento del compilatore -std = C++ 0x. Non sei sicuro di come forzare l'IDE a considerare l'argomento del compilatore fornito! –

0

Si utilizza g ++ 4.6 versione è necessario richiamare il -std flag = C++ 0x per compilare

g ++ -std = C++ 0x * uscita cpp -o

3

Vai in Impostazioni -> Compiler ... E aggiungere la bandiera di "avere g ++ seguire la venuta C++ 0x ISO C++ linguaggio standard [std = C++ 0x]

0

aggiungo il", -std = C++ 0x "dopo" -c -fmessage-length = 0 ", sotto Proprietà del progetto -> C/C++ Build -> Impostazioni -> GCC C++ Compiler -> Varie. Non dimenticare di aggiungere la virgola "," come separatore.

0

Provare con una versione diversa di gcc ha funzionato per me - gcc 4.9 nel mio caso.

Problemi correlati