Come abilitare il supporto C ++ 11 / C ++ 0x in Eclipse CDT?


210

Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2

Questo è un esempio di un pezzo di codice C ++ 11:

auto text = std::unique_ptr<char[]>(new char[len]);

L'editor Eclipse si lamenta di:

Function 'unique_ptr' could not be resolved

La compilation di Makefile funziona bene. Come impedire a Eclipse di lamentarsi di questo tipo di errori?


12
Per lo meno, dovrebbe esserestd::unique_ptr<char[]>
Cubbi

Non sono sicuro che sia corretto - char [] è convertibile in char * e unique_ptr <char> è un puntatore a char, come char *
Nick

1
Non unique_ptr<char>chiamerebbe delete, il che è sbagliato da quando è stato creato new[]?
Dietrich Epp,

6
@ Nick: No, ha ragione. Il modo in cui lo hai scritto farà sì deleteche venga chiamato, quando è necessario delete[] . Si unique_ptr<char>presume che stia ottenendo un puntatore, che viene eliminato con delete. unique_ptr<char[]>si aspetta un array, che viene eliminato con delete[]correttamente.
Nicol Bolas,

Risposte:


224

Ho trovato questo articolo nel forum Eclipse, ho appena seguito questi passaggi e funziona per me. Sto usando Eclipse Indigo 20110615-0604 su Windows con una configurazione Cygwin.

  • Crea un nuovo progetto C ++
  • Opzioni predefinite per tutto
  • Una volta creato, fai clic con il pulsante destro del mouse sul progetto e vai su "Proprietà"
  • Build C / C ++ -> Impostazioni -> Impostazioni strumento -> Compilatore C ++ GCC -> Varie -> Altre bandiere. Put -std=c++0x(o per la versione più recente del compilatore -std=c++11alla fine. ... invece del compilatore GCC C ++ ho anche il compilatore Cygwin
  • C / C ++ Generale -> Percorsi e simboli -> Simboli -> GNU C ++. Fai clic su "Aggiungi ..." e incolla __GXX_EXPERIMENTAL_CXX0X__(assicurati di aggiungere e anteporre due caratteri di sottolineatura) in "Nome" e lascia vuoto "Valore".
  • Premi Applica, fai quello che ti chiede di fare, quindi premi OK.

C'è una descrizione di questo anche nelle FAQ di Eclipse : Eclipse FAQ / C ++ 11 Caratteristiche .

Impostazione dell'immagine di Eclipse


2
Sì, ha funzionato! Ma assicurati di anteporre e aggiungere due caratteri di sottolineatura a GXX_EXPERIMENTAL_CXX0X - Nel frattempo lo accetterò
Nick,

5
Questo ha rimosso errori dell'editor spurio? Non ho alcun problema con la compilazione e vengono riconosciuti nuovi tipi di std, ma non riesco a liberarmi degli errori di sintassi dell'editor per l'intervallo basato su loop e riferimenti rvalue &&.
juanchopanza,

7
La naturale domanda di follow-up ora diventa: possiamo ottimizzare il nostro flusso di lavoro salvando queste specifiche impostazioni del progetto C ++ in un nuovo modello di progetto Eclipse, dicendo "Progetto C ++ 11"?
Nordlöw,

38
Nota: per chi cerca la risposta per Juno, questo non funziona .
Christopher

4
Per kepler / juno, la soluzione si trova in questa risposta . È pubblicato nella modifica alla risposta di Johan Lundberg di seguito, ma lo noto anche qui, per rendere più completa la risposta accettata.
Inusabile Lumière il

150

Istruzioni per Eclipse CDT 4.4 Luna e 4.5 Mars

Innanzitutto, prima di creare il progetto, configurare il parser di sintassi di Eclipse:

Window-> Preferences-> C/C++-> Build-> Settings-> Discovery->CDT GCC Build-in Compiler Settings

nella casella di testo intitolata Command to get compiler specsappend-std=c++11

Ora puoi creare un progetto, la configurazione dipende dal tipo di progetto che hai creato:

Per il progetto creato come: File -> Nuovo -> Progetto -> C / C ++ -> Progetto C ++

Fare clic con il tasto destro sul progetto creato e aprire

Properties-> C/C++ Build-> Settings-> Tool Settings-> GCC C++ Compiler->Dialect

Inserisci -std=c++11nella casella di testo intitolata other dialect flagso seleziona ISO C++11dal Language standardmenu a discesa.

Per il progetto CMake

Genera file di progetto eclipse (all'interno del tuo progetto)

mkdir build
cd build
cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ..

Quindi importare la directory generata in eclipse come progetto eclipse standard. Fare clic con il tasto destro del mouse sul progetto e aprire

Properties-> C/C++ General-> Preprocessor Include Paths, Marcos etc.->Providers

abilitarlo CDT GCC Build-in Compiler Settingse spostarlo più in alto di Contributed PathEntry Containers(Questo è importante)

Ultimo passaggio comune

ricompilare, rigenerare Project-> C/C++ Indexe riavviare Eclipse.


1
Ha funzionato perfettamente anche senza bisogno di un riavvio di eclissi. Grazie.
Prasannak,

Grazie. Nessun'altra risposta ha funzionato anche per me su Luna.
Mohamed El-Nakib

Funziona ancora su Marte. Più che un'ottima risposta! Se solo potessi votare questa risposta due volte!
Mohamed El-Nakib,

Grazie! Questa è la risposta più utile per il problema che ho riscontrato (4.5)
AturSams,

2
Per Eclipse Neon.3, con un progetto Makefile C ++, l'impostazione del progetto da aggiungere -std=c++11era Project Properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> Providers [tab] -> CDT GCC Built-in Compiler Settings -> Command used to get compiler specs:. Aggiungi il tuo -std=c++11a quello. L'ho impostato nelle impostazioni globali dell'area di lavoro come suggerimento, ma non è stato copiato nella posizione che descrivo sopra quando ho creato un nuovo Makefileprogetto.
BeeOnRope,

112

Aggiornamento 2016:

A partire da gcc 6 ( modifiche ), il dialetto C ++ predefinito è C ++ 14. Ciò significa che, a meno che tu non abbia esplicitamente bisogno di un dialetto più recente o più vecchio di quello, non devi più fare nulla con Eclipse.

Per Luna e Marte

Questa sezione wiki della comunità incorpora la risposta di Trismegistos;

1. Prima di creare il progetto, configurare il parser di sintassi Eclipse:

Finestra -> Preferenze -> C / C ++ -> Build -> Impostazioni -> Discovery -> Impostazioni compilatore build-in CDT GCC

nella casella di testo intitolata Comando per ottenere le specifiche del compilatore append -std=c++14 2. Crea progetto, la configurazione dipende dal tipo di progetto che hai creato:

Per il progetto creato come: File -> Nuovo -> Progetto -> C / C ++ -> Progetto C ++

Fare clic con il tasto destro sul progetto creato e aprire

Proprietà -> C / C ++ Build -> Impostazioni -> Impostazioni strumento -> GCC C ++ Compiler -> Dialetto

Inserisci -std=c++14nella casella di testo intitolata altri flag dialettali o seleziona ISO C ++ 11 dal menu a discesa Standard lingua.

Ora c'è un nuovo modo di risolverlo senza l'hack GXX_EXPERIMENTAL.

Per le versioni più recenti : (Attualmente Juno e Kepler Luna ):

Nelle versioni più recenti di Juno le impostazioni si trovano in Project properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> tab Providers -> CDT GCC Builtin Compiler Settings ().

Versioni precedenti 2012/2013:

  1. In C / C ++ Build (alle impostazioni del progetto), trova il percorso Includi preprocessore e vai alla scheda Provider . Deseleziona tutto tranne le impostazioni del compilatore incorporato CDT GCC. Quindi deseleziona Condividi impostazioni voci .... Aggiungi l'opzione -std = c ++ 11 nella casella di testo chiamata Command per ottenere le specifiche del compilatore.

  2. Vai a percorsi e simboli. In simboli, fare clic su Ripristina impostazioni predefinite e quindi applicare.


Appunti:

Eclipse è esigente nel colpire si applica, è necessario farlo ogni volta che si lascia una scheda delle impostazioni.

[Autopromozione]: ho scritto le mie istruzioni più dettagliate basate su quanto sopra. http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds

Grazie all'utente Nobodysu https://stackoverflow.com/a/13635080/1149664


3
Grazie ma non mi ha aiutato a risolvere i riferimenti c ++ 11. Il programma viene compilato correttamente, ma eclipse non può risolverli. Quando controllo "array", #ifndef __GXX_EXPERIMENTAL_CXX0X__restituisce true e il codice sottostante non viene analizzato. Quando aggiungo i __GXX_EXPERIMENTAL_CXX0X__simboli del progetto, l'array viene risolto ma i riferimenti del mio progetto vengono incasinati. Quale potrebbe essere il problema qui?
Halil Kaskavalci,

1
Penso che sia un bug. L'ho ri-prodotto in questo modo: Apri un nuovo progetto. Abilita le funzionalità di c ++ 11. Aggiungi una classe casuale con una variabile pubblica. Crea vettore di questa classe casuale. Ottieni l'iteratore. Prova ad accedere alla variabile pubblica. O il mio spazio di lavoro è danneggiato o c'è un bug in Eclipse che non può analizzarlo.
Halil Kaskavalci,

1
@HalilKaskavalci Ho trovato lo stesso bug. Se imposto l'editor per c ++ 11, gli iteratori non possono risolversi. In caso contrario, std :: unique_ptr non può risolvere. Davvero fastidioso, dal momento che io uso entrambi.
Kian,

1
@Kian ho segnalato il bug. bugs.eclipse.org/bugs/show_bug.cgi?id=397027 . È abbastanza fastidioso e ho iniziato a usare le librerie boost, non producono l'errore :)
Halil Kaskavalci il

1
per me va bene! Grazie! (fatto dal tuo riferimento) I'va ha aggiunto -std = c ++ 11 ai provider e ripristina i valori predefiniti nei simboli. Penso che il ripristino di default nei simboli mi salvi. Ora unique_ptr si sta risolvendo.
Denis Zaikin,

20

Per l'ultimo (Juno) eclipse cdt il seguente ha funzionato per me, non c'è bisogno di dichiararmi __GXX_EXPERIMENTAL_CXX0X__. Questo funziona per l'indicizzatore CDT e come parametro per il compilatore:

"il nome del tuo progetto" -> tasto destro -> proprietà:

C / C ++ Generale -> Preprocessore Includi percorsi, Macro ecc. -> passa alla scheda denominata "Provider":

  • per "Configurazione" selezionare "Rilascio" (e successivamente "debug")

  • spegnere tutti i provider e selezionare semplicemente "Impostazioni compilatore incorporato CDT GCC"

  • deseleziona "Condividi voci di impostazione tra progetti (fornitore globale)"

  • nel "Comando per ottenere le specifiche del compilatore:" add "-std = c ++ 11" senza virgolette (potrebbe funzionare anche con virgolette)

  • premi applica e chiudi le opzioni

  • ricostruire l'indice

Ora tutte le cose relative a c ++ 11 dovrebbero essere risolte correttamente dall'indicizzatore.

win7 x64, ultima eclissi ufficiale con cdt mingw-w64 gcc 4.7.2 del progetto mingwbuilds su sourceforge


ricevendo ancora gli stessi avvisi errati dell'editor, come nel tipo 'std :: thread' non è stato risolto anche se si compila ed esegue OK
Scott Stensland

2
è necessario compilare una volta con le nuove impostazioni, in modo che il parser "apprenda" che è impostato il flag std = c ++ 11
Andreas

a seconda della versione del compilatore potrebbe essere necessario aggiungere -std = c ++ 0x invece di -std = c ++ 11 (es. debian wheezy)
xmoex

15

Ho avuto lo stesso problema sul mio Eclipse Juno. Questi passaggi hanno risolto il problema:

  • Vai a Project -> Properties -> C/C++ General -> Path and Symbols -> Tab [Symbols].
  • Aggiungi il simbolo: __cplusplus con il valore 201103L

2
Questa dovrebbe essere una risposta accettata poiché funziona anche per i progetti Makefile!
omikron,

@ Jerk31 questo non funziona per Eclipse Juno in esecuzione su Windows (per me), vedo ancora quegli errori non necessari lamentati, nonostante il binario funzioni bene. Mi aiuti per favore!!!
Scambiare il

Mi dispiace davvero di non poterti aiutare su Windows. Non ho l'opportunità di provare a eseguire alcun progetto C ++ su questo sistema operativo. Ti auguro il meglio e buona fortuna!
Girolamo

13

Per Eclipse CDT Kepler ciò che ha funzionato per me per eliminare il std::threadsimbolo irrisolto è:

  1. Vai su Preferenze-> C / C ++ -> Build-> Impostazioni

  2. Seleziona la scheda Scoperta

  3. Seleziona le impostazioni del compilatore incorporato CDT GCC [Condiviso]

  4. Aggiungi il -std = c ++ 11 al campo "Comando per ottenere le specifiche del compilatore:" come:

$ {COMANDO} -E -P -v -dD -std = c ++ 11 $ {INPUTS}

  1. Ok e ricostruisci indice per il progetto.

L'aggiunta -std=c++11al progetto Properties/C/C++ Build->Settings->Tool Settings->GCC C++ Compiler->Miscellaneous->Other Flags non era sufficiente per Keplero, tuttavia era sufficiente per le versioni precedenti come Helios.


Per Eclipse Versione: 2019-09 R. Questa soluzione ha funzionato per me, tuttavia, ho trascorso molto tempo prima. Il problema era in Impostazioni costruttore: Progetto -> Proprietà -> Build C / C ++: nella scheda 'Impostazioni costruttore' selezionare 'Costruttore interno' per 'Tipo di costruttore'.
grekhss,

5

Non posso ancora commentare, quindi sto scrivendo la mia risposta:

È correlato __GXX_EXPERIMENTAL_CXX0X__ed è valido per Eclipse Juno e CDT 8.x.

Alcune parti di questa risposta sono già trattate in altre risposte, ma voglio che sia coerente.

Per rendere possibile la compilazione usando stdc ++ 11, è necessario aggiungere un flag specifico per il compilatore. Puoi farlo tramite le proprietà del progetto. Per modificare le proprietà del progetto RMBe Project propertieso ALT + ENTER. Quindi Build C / C ++ -> Impostazioni -> Impostazioni strumento -> Compilatore C ++ GCC -> Varie -> Altre bandiere. Mettere -STD = c ++ 11 alla fine della linea, per GCC si avrà un aspetto simile: -c -fmessage-length=0 -std=c++11. Aggiungendo -stdc ++ 11 il compilatore di flag (GCC) dichiarerà __GXX_EXPERIMENTAL_CXX0X__da solo.

A questo punto puoi costruire un progetto usando tutta la bontà di C ++ 11.

Il problema è che Eclipse ha il proprio parser per verificare la presenza di errori - ecco perché stai ancora ricevendo tutti i cattivi errori nell'editor Eclipse, mentre allo stesso tempo puoi costruire ed eseguire progetti senza nessuno. C'è un modo per risolvere questo problema dichiarando esplicitamente la __GXX_EXPERIMENTAL_CXX0X__bandiera per il progetto, uno può farlo (proprio come ha detto Carsten Greiner): C / C ++ Generale -> Percorsi e simboli -> Simboli -> GNU C ++. Fai clic su "Aggiungi ..." e passato __GXX_EXPERIMENTAL_CXX0X__(assicurati di aggiungere e anteporre due caratteri di sottolineatura) in "Nome" e lascia vuoto "Valore". E ora è la parte extra che volevo trattare in commento alla prima risposta, vai a: C / C ++ Generale -> Preprocessore Includi macro di tracciati ecc. -> Provider e SelezionaCDT Managed Build Setting Entriesquindi fai clic su APPLICA e torna alla scheda Voci, sotto GNU C ++ ora dovrebbero esserci le Voci di impostazione della build gestita da CDT controlla se all'interno è definito __GXX_EXPERIMENTAL_CXX0X__se è -> APPLICA e ricostruisci indice dovresti andare bene a questo punto.


3

Ho avuto anche diversi problemi (Ubuntu 13.04 64-bit, g ++ - 4.8, eclipse Juno 3.8.1, CDT 6.0.0). Molte cose sono menzionate sopra, mi dispiace ripeterle, ma in più ho avuto problemi di utilizzo

std::thread

come parte di c ++ 11 (l'aggiunta di -pthread per il linker risolve questo problema). Ad ogni modo, finalmente queste impostazioni hanno funzionato bene:

Progetto -> Proprietà -> Build C / C ++ -> Impostazioni -> Varie. Aggiungi il

-std=c++11

flag per i compilatori GCC e G ++. Fai clic su Applica.

Per il linker, stessa finestra, Varie, Flag linker, aggiunto il

-pthread

bandiera. Impostazioni della libreria condivisa, Nome oggetto condiviso, aggiungere il

-Wl,--no-as-needed

anche la bandiera. Fai clic su Applica.

C / C ++ Generale -> Percorsi e simboli -> Simboli TAB, GNU C ++ selezionato, Aggiungi il

__GXX_EXPERIMENTAL_CXX0X__

(senza valore)

bandiera. Fai clic su Applica.

C / C ++ Generale -> Preprocessore Includi percorsi .. -> Scheda Provider: selezionare

Impostazioni del compilatore incorporato CDT GCC

e per "Comando per ottenere le specifiche del compilatore", aggiungi il

-std=c++11

bandiera. Deseleziona Condividi. Fai clic su Applica.

CDT gestisce le voci di impostazione build, controlla anche questo. Deseleziona gli altri due. Fai clic su Applica.

Tornando alla scheda Voci, GNU C ++ CDT Gestisce le voci delle impostazioni di creazione, ora dovresti vedere le tue aggiunte

__GXX_EXPERIMENTAL_CXX0X__

iscrizione.

Questo è tutto. Quando si codifica, si digita

std::

ora può completare automaticamente la classe di thread, ad esempio, le build dovrebbero funzionare bene e non dovrebbero esserci

std::system_error'what(): Enable multithreading to use std::thread: Operation not permitted

in fase di esecuzione.


È stato il Project -> Properties -> C/C++ Build -> Settings -> Miscellaneouspasso che ha funzionato per me. Grazie
mille

2

Non so se sono solo io, la soluzione più alta non funziona per me, la mia versione di eclissi è solo una normale piattaforma di eclissi installata usando sudo apt-get install eclipse in Ubuntu Ma ho trovato una soluzione che adotta il metodo insieme sia dalla soluzione più alta che dalla seconda, ciò che ho fatto per farlo funzionare è descritto di seguito (Nota che gli altri passaggi come la creazione di un progetto C ++ ecc. sono ignorati per semplicità)

Dopo aver creato il progetto C ++

(1) C / C ++ Generale -> Percorsi e simboli -> Simboli -> GNU C ++. Fai clic su "Aggiungi ..." e incolla GXX_EXPERIMENTAL_CXX0X (assicurati di aggiungere e anteporre due caratteri di sottolineatura) in "Nome" e lascia vuoto "Valore".

(2) In C / C ++ Build (nelle impostazioni del progetto), trova il percorso di inclusione del preprocessore e vai alla scheda Provider. Deseleziona tutto tranne le impostazioni del compilatore incorporato CDT GCC. Quindi deseleziona Condividi voci delle impostazioni…. Aggiungi l'opzione -std = c ++ 11 nella casella di testo chiamata Command per ottenere le specifiche del compilatore

Dopo aver eseguito solo 2 e 2 passaggi, funziona, l'eclissi è in grado di risolvere unique_ptr, non so perché questa soluzione funzioni, spero che possa aiutare le persone.


Questo ha funzionato anche per me (eclipse neon). All'inizio non deselezionai gli altri provider, il che causava ancora problemi, ma deselezionando tutti gli altri provider oltre a "Impostazioni compilatore incorporato CDT GCC" e "Impostazioni utente CDT" funzionava. Grazie!
Zpon,

2

Eclipse C / C ++ non riconosce il simbolo std::unique_ptranche se nel file è stata inclusa l'intestazione di memoria C ++ 11.

Supponendo che tu stia utilizzando il compilatore GNU C ++, questo è quello che ho fatto per correggere:

Progetto -> Proprietà -> Generale C / C ++ -> Percorsi inclusione preprocessore -> GNU C ++ -> Voci impostazione utente CDT

  1. Fai clic sul pulsante "Aggiungi ..."

  2. Seleziona "Macro preprocessore" dal menu a discesa

    Name: __cplusplus     Value:  201103L
  3. Premi Applica e poi OK per tornare al tuo progetto

  4. Quindi ricostruisci il tuo indice C ++: Progetti -> Indice C / C ++ -> Ricostruisci


Questo è l'unico metodo che ha funzionato per me in Eclipse 2018-12. La risposta "accettata", ecc., Non funzionerà più nel 2018-12.
David Steinhauer, l'

1

Per me su Eclipse Neon ho seguito la risposta di Trismegisto qui sopra , ANCORA ho aggiunto anche un passaggio aggiuntivo:

  • Vai al progetto -> Proprietà -> Generale C ++ -> Preprocessore Includi percorsi, Macro, ecc. -> Provider -> Impostazioni compilatore incorporato CDT Cross GCC, aggiungi il flag "-std = c ++ 11"

Premi applica e OK.

Saluti,

Tipo.


0
  • tasto destro del mouse sul progetto e vai su "Proprietà"
  • Build C / C ++ -> Impostazioni -> Impostazioni strumento -> Compilatore C ++ GCC -> Varie -> Altre bandiere. Metti -lm alla fine della casella di testo di altre bandiere e OK.

Quale versione di Eclipse è questa?
Braiam,

0

Né l'hack né la versione più pulita funzionano per Indigo. L'hacking viene ignorato e mancano le opzioni di configurazione richieste. Per nessuna ragione apparente, build ha iniziato a funzionare dopo non funzionare e non fornire alcun motivo utile per cui. Almeno dalla riga di comando, ottengo risultati riproducibili.


0

Per ottenere supporto per C ++ 14 in Eclipse Luna, è possibile eseguire questi passaggi:

  • In C++ General -> Preprocessor Include -> Providers -> CDT Cross GCC Built-in Compiler Settings, aggiungi "-std = c ++ 14"
  • In C++ Build -> Settings -> Cross G++ Compiler -> Miscellaneous, aggiungi "-std = c ++ 14"

Reindicizza il tuo progetto ed eventualmente riavvia Eclipse. Dovrebbe funzionare come previsto.


0

L'ho risolto in questo modo su un Mac. Ho usato Homebrew per installare l'ultima versione di gcc / g ++. Atterrano in / usr / local / bin con include in / usr / local / include.

Ho inserito CD in / usr / local / bin e creato un collegamento simbolico da g ++ @ 7 a qualunque cosa semplicemente g ++ perché quel bit è fastidioso.

Poi sono andato su MyProject -> Proprietà -> C / C ++ Build -> Impostazioni -> GCC C ++ Compiler e ho cambiato il comando da "g ++" a "/ usr / local / bin / g ++". Se decidi di non creare il collegamento simbolico, puoi essere più specifico.

Fai la stessa cosa per il linker.

Applica e applica e chiudi. Lascia che ricostruisca l'indice. Per un po ', ha mostrato un numero spaventoso di errori, ma penso che fosse durante la costruzione di indici. Mentre stavo scoprendo gli errori, tutti sono scomparsi senza ulteriori interventi.


Penso senza verificare che potresti anche andare in Eclipse -> Proprietà -> C / C ++ -> Core Build Toolchains e modificare quelli con percorsi diversi, ma non sono sicuro di cosa farà.


0

Ho avuto un problema simile usando Eclipse C ++ 2019-03 per un progetto misto C e C ++ che utilizzava std :: optional e std :: swap. Ciò che ha funzionato per me è stato questo. Nel progetto Proprietà-> C / C ++ Build-> Impostazioni-> Impostazioni strumento-> Compilatore Cross G ++, rimuovere -std = gnu ++ 17 da Varie e inserirlo invece in Dialetto-> Altre bandiere dialettali.


0

Quando utilizzo un compilatore incrociato, spesso ottengo sistemi di generazione personalizzati avanzati meticolosamente realizzati dai colleghi. Uso "Progetto Makefile con codice esistente", quindi la maggior parte delle altre risposte non sono applicabili.

All'inizio del progetto, devo specificare che sto usando un compilatore incrociato nella procedura guidata per "Progetto Makefile con codice esistente". La cosa fastidiosa è che negli ultimi 10 anni circa, il pulsante del compilatore incrociato su quella procedura guidata non richiede dove si trova il compilatore incrociato. Quindi in un passaggio che risolve il problema C ++ e il problema del compilatore incrociato, devo andare alla scheda provider come indicato da risposte come @ravwojdyla sopra, ma il provider che devo selezionare è il provider cross-compilatore. Quindi nella casella di comando inserisco il percorso completo del compilatore e aggiungo -std = gnu ++ 11 per lo standard C ++ per il quale voglio avere il supporto. Questo funziona bene e ci si può aspettare.

Puoi farlo a un progetto esistente. L'unica cosa che potresti dover fare è rieseguire l'indicizzatore.

Non ho mai dovuto aggiungere la bandiera sperimentale o sovrascrivere la definizione di __cplusplus. L'unica cosa è, se ho una notevole quantità di codice C moderno, non ho un posto dove mettere l'opzione standard specifica C.

E per quando le cose vanno davvero male, ottenere un registro parser, usando quel comando nel sottomenu Indexer, può essere molto istruttivo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.