Ich versuche mit g++
und entweder den Flags -std=c++11
oder zu kompilieren c++0x
.
Ich erhalte jedoch diesen Fehler
cc1plus: error: unrecognized command line option "-std=c++11"
g ++ --version
g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-std=c++0x
mit g ++g++ --version
. Dann geben Sie hier die Versionsnummer ein.g++-
in Ihrem Konsolenfenster automatisch zu vervollständigen .Antworten:
Aus Ihrer G ++ - Version geht hervor, dass Sie sie dringend aktualisieren müssen. C ++ 11 ist erst seit G ++ 4.3 verfügbar. Die neueste Version ist 4.7.
In Versionen vor G ++ 4.7 müssen Sie
-std=c++0x
für neuere Versionen verwenden, die Sie verwenden können-std=c++11
.quelle
Zitat von der gcc-Website :
Wahrscheinlich verwenden Sie eine Version von g ++, die nicht unterstützt wird
-std=c++11
. Versuchen-std=c++0x
stattdessen.Die Verfügbarkeit von C ++ 11-Funktionen gilt nur für Versionen> = 4.3.
quelle
Sie sollten dies versuchen
quelle
Ich habe auch den gleichen Fehler bekommen, Kompilieren mit -D Flag behoben. Versuchen Sie Folgendes:
g ++ -Dstd = c ++ 11
quelle
std::vector<int> v = {1, 2, 3};
zum Testen geschrieben und es hat alle möglichen Fehler darüber geworfen (interessanterweise andere Fehler als ohne Flag).-D
Befehlszeilenargument entspricht dem Einfügen eines#define
in Ihren Quellcode. Dieser Befehl ist also wie mit#define std c++11
. Können Sie sich dann vorstellen, wiestd::string
es neu definiert wirdc++11::string
? Überhaupt nicht sehr nützlich.