2015-12-15 6 views
1

J'utilise Eclipse CDT Mars (et parfois Cevelop) sur Debian Stretch (et parfois sur Fedora 22) pour écrire du code C++. Mon projet est correctement défini, dans Eclipse et il se construit même quand je suis temporairement à court de bugs. Cependant, la plupart (ou la totalité) des constructions de bibliothèque standard C++ sont marquées comme des définitions non résolues: std :: string, std :: make_pair, std :: map, tout cela. J'ai essayé d'ajouter manuellement tout include je pouvais penser, mais en vain:Eclipse CDT ne parvient pas à résoudre la plupart des constructions de bibliothèque standard

/usr/include/ 
/usr/include/c++/4.9 
/usr/include/c++/4.9/bits 
/usr/include/x86_64-linux-gnu 
/usr/include/x86_64-linux-gnu/bits 
/usr/include/c++/4.9/debug 
/usr/lib/gcc/x86_64-linux-gnu/4.9/include 
/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed 

Ce n'est pas vraiment un nouveau problème pour moi, je l'ai eu cela depuis longtemps, avec les versions antérieures d'Eclipse De plus, je n'ai jamais eu l'occasion de poser des questions à ce sujet.

Questions associées/similaires: Eclipse CDT fails to resolve most standard library constructs.

Répondre

1

Le problème est dû à l'utilisation de constructions C++ 11. Eclipse exécute GCC (ou n'importe quel compilateur avec lequel vous l'avez configuré) pour analyser et/ou indexer votre code. La version 4.9 de gcc, que vous utilisez par défaut, est C++ 03 (sinon plus tôt), et déterminera que la syntaxe de C++ 11/C++ 14 est erronée.

Pour changer cela, vous devrez modifier GCC de ligne de commande de l'indexeur: Dans les menus, sélectionnez

Projet>Propriétés>C/C++ General>préprocesseur les chemins d'inclusion, macros etc.>Fournisseurs>CDT GCC intégré les paramètres du compilateur

Vous verrez maintenant une zone de texte intitulé " Commande pour obtenir les spécifications du compilateur ". Ajouter -std=c++11 après l'un des autres commutateurs.