EDIT: Il s’avère que cela n’est pas spécifique à Eclipse Kepler. J'ai dû utiliser le même processus pour Eclipse Juno. Le problème était qu’il semblait manquer des étapes dans d’autres messages qui répondaient à la même question.
J'utilise Eclipse Kepler pour C++ et j'essaie d'utiliser C++ 11 et j'obtiens des erreurs. Quand je compile j'ai l'erreur
erreur: les boucles basées sur la plage ne sont pas autorisées en mode C++ 98
J'ai suivi les instructions du post
support Eclipse CDT C++ 11/C++ 0x
et la solution proposée pour Eclipse Juno ne fonctionne pas.
Différents commentaires ont suggéré de redémarrer Eclipse, ainsi que de nettoyer et de reconstruire. Cela n'a pas fait de différence.
Il y a deux choses que vous devez faire, vous devez d'abord configurer votre compilateur, puis le processeur de langage de CDT. Puisque vous n'avez pas mentionné le compilateur que vous utilisez, je suppose que c'est GCC, mais les étapes seront similaires pour les autres compilateurs. (Notez que vous avez besoin d’un compilateur prenant en charge C++ 11, bien sûr.)
L'installation du compilateur est assez simple:
À ce stade, vous devriez pouvoir reconstruire votre projet et le faire fonctionner. Mais CDT peut toujours afficher des erreurs pour C++ 11. Voici comment vous pouvez résoudre ce problème:
Prise en charge de C++ 11 dans Eclipse Kepler Service Release 1 (ID de la version: 20130919-0819)
Dans la dernière version Eclipse Kepler SR1, il suffit d’ajouter - std = c ++ 11
La ligne "pour obtenir les spécifications du compilateur:" - devrait ressembler à ceci:
${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
A partir de CDT 8.3 ( disponible sous la forme d'une mise à jour Kepler ), une nouvelle option de dialecte est présente dans les paramètres de construction:
J'utilise Eclipse Kepler et pour le réparer, j'ai fait ceci:
1 - Cliquez-droit sur le projet >> Proprietes >> C/C++ Build :: Settings
2 - Je suis allé au compilateur GCC G ++ >> Divers >> Autres drapeaux
i then added -std=c++11
hit apply and ok
Cela a résolu mon problème!
J'espère que ça a aidé!
Lancer Eclipse Indigo et cdt 8.0.2 ici. J'ai suivi tous les guides, mais il était toujours nécessaire de définir manuellement le préprocesseur pour trouver des éléments comme std :: unique_ptr. Le fichier d'inclusion "mémoire" vérifie cela. Définissez __cplusplus sur 201103L dans l'onglet "Symboles" sous "Chemins d'accès et symboles" dans "C++ Général" dans les propriétés du projet.
L'ajout de l'indicateur de dialecte "-std = c ++ 11" dans les propriétés du projet-> Construction C/C++ -> Paramètres -> Paramètres de l'outil (Compilateur GCC C++ -> Dialecte) a résolu mon problème dans Eclipse Kepler, à l'exception des paramètres indiqués ci-dessus.
J'utilise Eclipse Luna et il n'y a pas de "Paramètres de l'outil" sous C/C++ Build -> Settings. I A FAIT ajouter -std = c ++ 11 à la ligne de commande de spécification du compilateur sous "C/C++ Général -> Le préprocesseur inclut -> Fournisseurs" comme suggéré. Mais cela n'a toujours pas satisfait la capacité de mon indexeur à résoudre emplace ().
J'ai donc regardé dans le fichier d'en-tête et découvert que les fonctions de l'emploi dépendent de __cplusplus> = 201103L. J'ai donc ajouté le symbole de préprocesseur "__cplusplus" et lui ai attribué la valeur 201103.
Un peu hack, mais l'indexeur est content. (Et les makefiles définissent mes drapeaux de construction, pas le projet Eclipse)
La solution fournie par MrEricSir ne fonctionne qu'après avoir installé le dernier CDT Eclipse Oxygen. Cela ne fonctionne pas pour moi avec Mars CDT.