2016-10-03 1 views
4

Eclipse 4.6.1 avec NEON.1 CDT 9.1.0, g ++ 5.4.0Eclipse CDT NEON ne reconnaît pas C++ 11/14 contenu d'en-tête

Il ne reconnaît pas tous C++ 11/14 caractéristiques. Il reconnaît les mots-clés comme auto et nullptr. Il ne reconnaît cependant pas les choses provenant d'en-têtes qui dépendent des symboles corrects définis.

Par exemple lors de l'inclusion <memory> il reconnaît les anciens symboles comme std::auto_ptr pas connu comme std::shared_ptr. Ces nouvelles fonctionnalités sont dans un #if __cplusplus >= 201103L.

Je peux le faire fonctionner pour un projet eclipse standard en définissant l'option dialect mais j'en ai besoin pour travailler avec un projet basé sur autotools qui n'a pas de réglage de dialecte.

J'ai la compilation actuelle du programme en utilisant la variable automake AM_CXXFLAGS. Pour le faire fonctionner pour l'indexeur je suis allé en éclipse à Propriétés du projet> C/C++ Général> Préprocesseur Inclure les chemins, Macros

Puis à l'onglet fournisseurs et ajouté -std = C++ 14 option à la commande pour le CDT GCC intégré dans les paramètres du compilateur. J'ai également déplacé ce fournisseur en tête de liste. Sur l'onglet des entrées, vous pouvez voir la valeur réelle de la __cplusplus définir. Avant d'ajouter le commutateur -std = C++ 14 il était wel ci-dessous le 201103L requis après avoir ajouté l'interrupteur, il était bien au-dessus.

Répondre

2

Découvert le problème. Lorsque j'ai ajouté l'option -std=c++14 dans la commande pour obtenir la spécification du compilateur sur l'onglet du fournisseur, je les ai ajouté pour la configuration "Debug" car j'utilisais cette configuration. Il s'est avéré que l'indexeur était configuré pour toujours utiliser la configuration "Build". Après avoir ajouté le paramètre pour la configuration "Build" et réindexé les erreurs sont parties.