Comment utiliser C ++ 11 avec g ++?

21

Je tape actuellement tout mon code dans gedit et j'utilise le terminal pour compiler mes programmes. Pour ce faire, je tape:

$ g++ main.cpp -o main
$ ./main

Et cela fonctionne. Cependant, il n'utilise pas C ++ 11. Comment puis-je vérifier ma version de C ++ et aussi compiler via un terminal en utilisant C ++ 11?

muru
la source
1
également dans le réseau stackoverflow.com/questions/10363646/compiling-c11-with-g
Jeff Puckett
Devez-vous toujours inclure -std = c ++ 11 ou y a-t-il un paramètre pour que chaque fois que je le compile, il soit automatiquement conforme à c ++ 11 ou
Français Mike

Réponses:

53

Vous pouvez le faire en utilisant le -std=c++11drapeau. Voici un exemple:

g++ -std=c++11 -Wall -Wextra -Werror main.cpp -o main

Ce mode peut être sélectionné avec l' -std=c++11indicateur de ligne de commande, ou -std=gnu++11pour activer également les extensions GNU. ( Source )

Voir l'explication des autres drapeaux ci-dessous. Je suis profondément convaincu que l'utilisation d'au moins ces indicateurs d'erreur vous facilitera la vie à long terme. Une fois que vous avez une meilleure connaissance de ce que fait votre script, vous pouvez omettre des avertissements si nécessaire pour obtenir un résultat, mais ce ne devrait pas être la norme. J'espère que cela vous aidera. Voici un bon endroit pour commencer à lire.

  • -Wall - active tous les avertissements majeurs.
  • -Wextra - active d'autres avertissements importants.
  • -Werror- transformer tous les avertissements en erreurs, entraînant l'échec des compilations si des avertissements sont signalés.

Sources:

  1. GCC: Résumé des options
  2. GCC: Options pour demander ou supprimer des avertissements
Videonauth
la source
5
Merci! Pourriez-vous expliquer à quoi servent "-Wall" et "-Werror" dans cette commande, s'il vous plaît?
1
Je l'ai ajouté à ma réponse.
Videonauth
7
@ dhaneku.b: Pourquoi ne pas lire la documentation? C'est pour ça qu'il est là.
Courses de légèreté avec Monica
9
@LightnessRacesinOrbit Parce que la documentation ne va pas nécessairement expliquer pourquoi Videonauth pensait qu'il était important de les ajouter, malgré le fait qu'ils ne se trouvaient pas dans l'exemple de ligne de commande d'origine, ni nécessairement expliquer le type d'interaction importante "-Wall" et " -Werror "pourrait avoir avec" -std = c ++ 11 ". (Oui, la réponse à ce dernier n'est "rien de spécial", mais la documentation ne va pas le dire, et il y a un tas d'étranges coins qui ne sont pas mentionnés dans la documentation. "L'absence de preuve n'est pas ' t preuve d'absence ", et tout ça.)
RM
2
Ce mode peut être sélectionné avec l' -std=c++11indicateur de ligne de commande, ou -std=gnu++11pour activer également les extensions GNU. ( Source )
Videonauth