Der Titel ist ziemlich selbsterklärend. Ich habe Qt Creator 2.7.0 heruntergeladen und versuche, einen grundlegenden C ++ 11-Code zu kompilieren:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
x *= 2;
}
Ich erhalte die folgende Fehlermeldung:
range based for loops are not allowed in c++ 98 mode
Laut diesem Artikel unterstützt diese Version von Qt Creator jedoch C ++ 11. Wie aktiviere ich es?
Antworten:
Nach dieser Seite hinzufügen
CONFIG += c++11
in Ihre .pro-Datei (siehe unten auf dieser Webseite). Es erfordert Qt 5.
Die anderen Antworten schlagen vor
QMAKE_CXXFLAGS += -std=c++11
(oderQMAKE_CXXFLAGS += -std=c++0x
)arbeiten auch mit Qt 4.8 und gcc / clang.
quelle
-std=c++11
, sollte sie auch das (veraltete)-std=c++0x
Flag unterstützen, und beide Flags sollen identische Effekte haben (was auf Ihrem Computer anscheinend nicht der Fall ist). Wenn ein Compiler unterstützt-std=c++0x
, bedeutet dies nicht, dass er versteht-std=c++11
. Daher ist die Auswahl-std=c++0x
als Standard für den C ++ 11-Kompatibilitätsmodus eine vernünftige Wahl. Auf meiner Maschine, zumindest laut Manpage ,-std=c++0x
und-std=c++11
sind identisch.-std=c++11
wenn der Compiler es unterstützt, und Qt könnte klug genug sein, dies zu tun. Nun, wenn Ihnen dieses Problem so weh tut, können Sie einen Fehlerbericht einreichen ...Fügen Sie dies Ihrer .pro-Datei hinzu
oder
quelle
Als Alternative für die Behandlung beider Fälle, die in Alis ausgezeichneter Antwort angesprochen werden, füge ich normalerweise hinzu
zu meinen Projektdateien. Dies kann nützlich sein, wenn Sie sich nicht wirklich darum kümmern, welche Qt-Version in Ihrem Team verwendet wird, aber Sie möchten, dass C ++ 11 auf jeden Fall aktiviert ist.
quelle
Fügen Sie Ihrer qmake-Datei hinzu
quelle
Wenn Sie eine frühere Version von QT (<5) verwenden, versuchen Sie dies
quelle
Der einzige Ort, an dem ich es erfolgreich zum Laufen gebracht habe, ist die Suche in:
Dann an der Linie:
Bearbeiten:
quelle