wake-up-neo.net

Kompilieren Sie C++ 14-Code mit g ++

Ich verwende g ++ 4.8.4 auf Ubuntu 14.04 LTS. Beim Versuch, mit '-std = c ++ 14' zu kompilieren, erhalte ich diesen Fehler:

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

Das Kompilieren mit '-std = c ++ 11' funktioniert gut, daher bin ich mir nicht sicher, was los ist. Unterstützt g ++ C++ 14 wirklich noch nicht? Benutze ich eine falsche Befehlszeilenoption?

Ich habe "Sudo apt-get install g ++" verwendet, um automatisch die neueste Version abzurufen. Ist das richtig?

43
Silverlan

Für gcc 4.8.4 müssen Sie -std=c++1y in späteren Versionen verwenden. Wenn Sie mit 5.2 beginnen, können Sie -std=c++14 verwenden.

Wenn Sie sich die gcc online-Dokumente ansehen, finden Sie die Handbücher für jede Version von gcc. Weitere Informationen finden Sie unter Dialect-Optionen für 4.9.3 im Handbuch GCC 4.9.3 es sagt:

"C++ 1y"

Die nächste überarbeitete Version des ISO C++ - Standards, die vorläufig für 2014 geplant ist. Der Support ist äußerst experimentell und wird sich in zukünftigen Versionen mit großer Wahrscheinlichkeit inkompatibel ändern. 

Bis 4.9.3 mussten Sie -std=c++1y verwenden, während die Optionen von gcc 5.2 Folgendes sagen:

"C++ 14" "C++ 1y"

Der ISO-C++ - Standard 2014 plus Änderungen. Der Name "c ++ 1y" ist veraltet. 

Mir ist nicht klar, warum dies unter Options Controlling C Dialect aufgeführt ist, aber so sind die Dokumente derzeit organisiert.

51
Shafik Yaghmour

Das Flag -std=c++14 wird in GCC 4.8 nicht unterstützt. Wenn Sie C++ 14-Funktionen verwenden möchten, müssen Sie sie mit -std=c++1y kompilieren. Wenn Sie godbolt.org verwenden, scheint die früheste Version, die -std=c++14 unterstützt, GCC 4.9.0 oder Clang 3.5.0

14
NathanOliver

G ++ unterstützt C++ 14 sowohl über -std=c++14 als auch -std=c++1y. Letzteres war der gebräuchliche Name für den Standard, bevor bekannt wurde, in welchem ​​Jahr er veröffentlicht werden würde. In älteren Versionen (einschließlich Ihrer) wird nur Letzteres akzeptiert, da das Veröffentlichungsjahr zum Zeitpunkt der Veröffentlichung noch nicht bekannt war.

Ich habe "Sudo apt-get install g ++" verwendet, um automatisch die neueste Version abzurufen. Ist das richtig?

Es installiert die neueste Version, die in den Ubuntu-Repositorys verfügbar ist, nicht die neueste Version, die vorhanden ist.

Die neueste GCC-Version ist 5.2.

4
sepp2k

Folgen Sie den Anweisungen unter https://Gist.github.com/application2000/73fd6f4bf1be6600a2cf9f56315a2d91 , um die benötigte gcc-Version - gcc 5 oder gcc 6 - unter Ubuntu 14.04 einzurichten. Die Anweisungen umfassen die Konfiguration von update-alternatives, damit Sie nach Bedarf zwischen den Versionen wechseln können.

0
WillC