web-dev-qa-db-fra.com

Erreur C++ "Nullptr n'a pas été déclaré dans cette portée" dans Eclipse IDE

J'utilise Eclipse Helios et g ++ - 4.6 est installé. Espérons que je ne me trompe pas sur le fait que g ++ 4.6 implémente les fonctionnalités C++ 11. J'ai créé un projet C++ qui utilise les mots clés nullptr et auto. La construction donne les erreurs suivantes: -

../{filename}.cpp:13:13: error: ‘nullptr’ was not declared in this scope

../{filename}.cpp:14:2: warning: ‘auto’ will change meaning in C++0x; please remove it [-Wc++0x-compat]

En fait, la construction se déroulait bien jusqu'à hier. Je les reçois de nulle part aujourd'hui. S'il vous plaît aidez-moi à résoudre ce problème.

48
Vivek Ragunathan

Enfin découvert quoi faire. Ajout de l'argument -std = c ++ 0x du compilateur sous Propriétés du projet -> Construction C/C++ -> Paramètres -> Compilateur GCC C++ -> Divers. Ça fonctionne maintenant!

Mais comment ajouter cet indicateur par défaut pour tous les projets C++? N'importe qui?

20
Vivek Ragunathan

Selon la page GCC pour C++ 11 :

Pour activer la prise en charge de C++ 0x, ajoutez le paramètre de ligne de commande -std = c ++ 0x à votre ligne de commande g ++. Ou, pour activer les extensions GNU en plus des extensions C++ 0x, ajoutez -std = gnu ++ 0x à votre ligne de commande g ++. GCC 4.7 et versions ultérieures supportent également -std = c ++ 11 et -std = gnu ++ 11.

Avez-vous compilé avec -std=gnu++0x?

49
Rob I

Est-ce une erreur réelle du compilateur ou une erreur d'analyse de code? Parfois, l’analyse du code peut être un peu sommaire et signaler des erreurs non valides.

Pour désactiver l'analyse de code pour le projet, cliquez avec le bouton droit de la souris sur votre projet dans l'Explorateur de projets, cliquez sur Propriétés, puis allez sur l'onglet Général C/C++, puis sur Analyse de code. Cliquez ensuite sur "Utiliser les paramètres du projet" et désactivez ceux que vous ne souhaitez pas.

De plus, êtes-vous sûr de compiler avec le compilateur C++ 11?

4
josephthomas

Vous utilisez la version g ++ 4.6, vous devez appeler l'indicateur -std = c ++ 0x pour compiler

g ++ -std = c ++ 0x * .cpp -o sortie

3
The Beast

Allez dans Paramètres -> Compilateur ... Et ajoutez un indicateur à "Demander à g ++ de suivre la prochaine norme C++ 0x ISO du langage C++ [std = c ++ 0x] 

3
Leon

Essayer avec une version différente de gcc a fonctionné pour moi - gcc 4.9 dans mon cas.

0
JobJob

J'ajoute le ", -std = c ++ 0x" après "-c -fmessage-length = 0" , sous Propriétés du projet -> Génération C/C++ -> Paramètres -> Compilateur GCC C++ -> Divers. N'oubliez pas d'ajouter la virgule "," en tant que séparateur.

0
qie