Frage Wie verwende ich C ++ 11 mit g ++?


Ich schreibe gerade meinen ganzen Code in gedit und benutze das Terminal, um meine Programme zu kompilieren. Dazu tippe ich:

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

Und das funktioniert. Es verwendet jedoch nicht C ++ 11. Wie kann ich meine Version von C ++ überprüfen und auch über Terminal mit C ++ 11 kompilieren?


20
2018-05-16 16:14


Ursprung


auch im Netzwerk stackoverflow.com/questions/10363646/compiling-c11-mit-g - Jeff Puckett


Antworten:


Dies können Sie tun, indem Sie die -std=c++11 Flagge. Hier ist ein Beispiel:

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

Dieser Modus kann mit den Tasten gewählt werden -std=c++11 Befehlszeilenflag oder -std=gnu++11 um auch GNU-Erweiterungen zu ermöglichen.Quelle)

Siehe die Erklärung der anderen Flaggen unten. Ich bin fest davon überzeugt, dass die Verwendung von mindestens diesen Fehlerflags Ihr Leben auf lange Sicht erleichtern wird. Sobald Sie besser wissen, was Ihr Skript macht, können Sie Warnungen weglassen, um ein Ergebnis zu erzielen, aber es sollte nicht der Standard sein. Hoffe das hilft dir. Hier ist ein guter Platz um zu lesen.

  • -Wall - aktiviert alle wichtigen Warnungen.
  • -Wextra - ermöglicht andere wichtige Warnungen.
  • -Werror - mache alle Warnungen zu Fehlern, Compilations fehlschlagen wenn irgendwelche Warnungen gemeldet werden.

Quellen:

  1. GCC: Optionszusammenfassung
  2. GCC: Optionen zum Anfordern oder Unterdrücken von Warnungen

52
2018-05-16 16:27



Vielen Dank! Würde es Ihnen etwas ausmachen zu erklären, welchen Zweck "-Wall" und "-Werror" in diesem Befehl erfüllen?
Fügte es meiner Antwort hinzu. - Videonauth
@ dhaneku.b: Warum nicht die Dokumentation lesen? Dafür ist es da. - Lightness Races in Orbit
@LightnessRacesinOrbit Weil die Dokumentation nicht unbedingt erklären wird, warum Videonauth dachte, dass es wichtig ist, sie hinzuzufügen, trotz der Tatsache, dass sie nicht in der ursprünglichen Beispielbefehlszeile waren, oder notwendigerweise erklären, welche Art wichtiger Interaktion "-Wall" und " -Werror "könnte mit" -std = c ++ 11 "haben. (Ja, die Antwort darauf ist "nichts Besonderes", aber die Dokumentation wird das nicht sagen, und es gibt eine Menge seltsamer Eckfälle, die in der Dokumentation nicht erwähnt werden. "Fehlen von Beweisen ist nicht" t Beweis der Abwesenheit ", und all das.) - R.M.
Dieser Modus kann mit den Tasten gewählt werden -std=c++11 Befehlszeilenflag oder -std=gnu++11 um auch GNU-Erweiterungen zu ermöglichen.Quelle) - Videonauth