Come fare in modo che la toolchain GCC Linux di Eclipse CDT risolva le intestazioni della libreria standard C ++?


12

In Ubuntu 12.04 LTS ho installato il plug-in Eclipse CDT e ho aperto il nuovo progetto Hello World per testare tutto. Quando stavo creando il progetto, ho scelto l'unica toolchain: "Linux GCC"

Quando viene creato il progetto, tuttavia, lo dice

#include<iostream>
#include<cstdlb>

sono irrisolti. Pertanto, le linee con coute endlnon possono essere utilizzate e non possono essere trovate std.

using namespace std; sta anche causando problemi.

Come posso riconoscere le mie #includedirettive per le intestazioni di libreria standard per supportare il codice usando lo stdspazio dei nomi?


Questi errori persistono anche dopo aver fatto Project> Build All?
Eliah Kagan,

2
Forse questa è una domanda stupida ma hai creato un nuovo progetto specificamente come progetto C ++ piuttosto che come progetto C?
Bazz,

Risposte:


4

Se avessi lo stesso problema che ho avuto, sospetto che il tuo progetto venga compilato ma il completamento del codice / l'evidenziazione del codice fallisce? Ho appena trovato alcune note che potrebbero essere utili. Ecco cosa ho fatto:

  • Progetto-> Proprietà

  • C / C ++ Generale

  • Percorsi e simboli

  • seleziona la lingua appropriata

  • Fai clic su "Aggiungi" e aggiungi le directory specifiche della versione del compilatore

Per il linguaggio "GNU C ++" ho aggiunto:

  /usr/include
  /usr/include/c++/4.6
  /usr/include/c++/4.6/bits
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits
  /usr/include/c++/4.6/debug
  /usr/include/c++/4.6/i686-linux-gnu
  /usr/include/c++/4.6/i686-linux-gnu/bits

Per "GNU C" ho aggiunto:

  /usr/include
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits

TBH, non penso che tutte le directory sopra siano effettivamente richieste (probabilmente potresti rimuovere le directory 'bit'), ma la lista sopra ha funzionato per me al momento.

Ora sto usando Eclipse Indigo (versione 3.7.2) da eclipse.org e trova e aggiunge automaticamente le directory include corrette. L'elenco è diverso per me:

/usr/include/c++/4.6
/usr/include/c++/4.6/i686-linux-gnu
/usr/include/c++/4.6/backward
/usr/lib/gcc/i686-linux-gnu/4.6/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed
/usr/include/i386-linux-gnu
/usr/include

Chiaramente, aggiungi solo le directory include che esistono effettivamente sul tuo sistema ;-)


Bene, questo non funziona per me, anche se in realtà sono su Debian Stretch a 64 bit. Ma ho adattato i tuoi suggerimenti alla mia piattaforma.
einpoklum,
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.