web-dev-qa-db-fra.com

Différence entre les options de compilation gcc std = c ++ 1y et std = c ++ 14

J'ai installé gcc 4.9.2. J'ai compilé le programme en utilisant la commande suivante:

/root/gcc-4.9.2/bin/g++ -std=c++1y testing.cpp

Notez qu'en plus de l'option -std=c++1y, il existe une autre option -std=c++14. Le compilateur fonctionnera-t-il de la même manière et générera-t-il exactement le même exécutable pour les deux options?

22
ysrhung

C++ 14 est la dernière norme ISO et doit être utilisée sauf si vous avez besoin d'une fonctionnalité non standard gcc.

c++1y est un nom qui a été utilisé pour faire référence à la norme c ++ 14 avant qu'elle ne soit terminée, il est donc très probablement conforme à un projet de norme, mais pas à la norme proprement dite. Il peut y avoir quelques différences minuscules entre les deux, mais c++14 est la norme ISO.

En bref, utilisez c++14.

32
Matt

Dans le cas de gcc 4.9.2 mentionné par vous, il n'y a pas de différence entre c++14 et c++1y. Mais pour la version antérieure de gcc, par ex. gcc 4.8.1 il y a pas de c++14 option

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

car l'année de l'acceptation standard n'était pas encore connue. Dans ce cas, utilisez le -std=c++1y l'option est seule solution pour activer certaines parties de la norme c ++ 14 venant en sens inverse.

4
αλεχολυτ