web-dev-qa-db-fra.com

Compiler c ++ 14-code avec g ++

J'utilise g ++ 4.8.4 sur Ubuntu 14.04 LTS. En essayant de compiler avec '-std = c ++ 14', j'obtiens cette erreur:

g++: error unrecognized command line option '-std=c++14'

Compiler avec '-std = c ++ 11' fonctionne bien, donc je ne suis pas sûr de ce qui se passe. Est-ce que g ++ n'a pas encore de support pour c ++ 14? Est-ce que j'utilise une mauvaise option de ligne de commande?

J'ai utilisé "Sudo apt-get install g ++" qui devrait automatiquement récupérer la dernière version, est-ce correct?

43
Silverlan

Pour gcc 4.8.4, vous devez utiliser -std=c++1y dans les versions ultérieures. À partir de 5.2, vous pouvez utiliser -std=c++14.

Si nous regardons les documents gcc online , nous pouvons trouver les manuels de chaque version de gcc et voir l’option Options de dialecte pour 4.9.3 dans le manuel GCC 4.9.3 . ça dit:

«C++ 1y»

Prochaine révision de la norme ISO C++, provisoirement prévue pour 2014. Le support est hautement expérimental et évoluera presque certainement de manière incompatible avec les versions futures. 

Donc, jusqu'à 4.9.3, vous deviez utiliser -std=c++1y tandis que les options gcc 5.2 disent:

«C++ 14» «C++ 1y»

La norme ISO C++ de 2014 et ses amendements. Le nom 'c ++ 1y' est obsolète. 

Je ne comprends pas pourquoi cela est répertorié sous Options Controlling C Dialect, mais c’est ainsi que les documents sont actuellement organisés.

51
Shafik Yaghmour

L'indicateur -std=c++14 n'est pas pris en charge sur GCC 4.8. Si vous souhaitez utiliser les fonctionnalités C++ 14, vous devez compiler avec -std=c++1y. En utilisant godbolt.org , il semble que la version la plus ancienne à supporter -std=c++14 est GCC 4.9.0 ou Clang 3.5.0

14
NathanOliver

G ++ prend en charge C++ 14 à la fois via -std=c++14 et -std=c++1y. Ce dernier était le nom usuel de la norme avant qu’elle ne soit connue en quelle année elle serait publiée. Dans les versions plus anciennes (y compris la vôtre), seule cette dernière est acceptée car l'année de publication n'était pas encore connue au moment de la publication de ces versions.

J'ai utilisé "Sudo apt-get install g ++" qui devrait automatiquement récupérer la dernière version, est-ce correct?

Il installe la dernière version disponible dans les référentiels Ubuntu, pas la dernière version existante.

La dernière version de GCC est la 5.2.

4
sepp2k

Suivez les instructions de https://Gist.github.com/application2000/73fd6f4bf1be6600a2cf9f56315a2d91 pour configurer la version de gcc dont vous avez besoin - gcc 5 ou gcc 6 - sous Ubuntu 14.04. Les instructions incluent la configuration de update-alternatives pour vous permettre de basculer entre les versions selon vos besoins.

0
WillC