Il titolo è abbastanza auto-descrittivo. Ho scaricato Qt Creator 2.7.0 e sto cercando di compilare un codice C ++ 11 di base:
int my_array[5] = {1, 2, 3, 4, 5}; for(int &x : my_array) { x *= 2; }
Sto ricevendo il seguente errore:
range based for loops are not allowed in c++ 98 mode
Tuttavia, secondo questo articolo questa versione di Qt Creator supporta C ++ 11. Quindi come lo abilito?
Secondo questo sito aggiungi
CONFIG += c++11
al tuo file .pro (vedi in fondo a quella pagina web). Richiede Qt 5.
Le altre risposte, suggerendo
QMAKE_CXXFLAGS += -std=c++11
(o QMAKE_CXXFLAGS += -std=c++0x
)
funziona anche con Qt 4.8 e gcc / clang.
Aggiungi questo al tuo file .pro
QMAKE_CXXFLAGS += -std=c++11
o
CONFIG += c++11
Come alternativa per la gestione di entrambi i casi affrontati nell’eccellente risposta di Ali, di solito aggiungo
# With C++11 support greaterThan(QT_MAJOR_VERSION, 4){ CONFIG += c++11 } else { QMAKE_CXXFLAGS += -std=c++0x }
ai miei file di progetto. Questo può essere utile quando non ti interessa molto quale sia la versione di Qt utilizzata dal tuo team, ma vuoi che sia abilitato C ++ 11 in ogni caso.
aggiungi al tuo file qmake
QMAKE_CXXFLAGS+= -std=c++11 QMAKE_LFLAGS += -std=c++11
Se si utilizza una versione precedente di QT (<5), provare questo
QMAKE_CXXFLAGS += -std=c++0x
L’unico posto in cui riesco a farlo funzionare è la ricerca in … \ Qt \ {5.9; o la tua versione} \ mingw {53_32; o la tua versione} \ mkspecs \ win32-g ++ \ qmake.conf:
Quindi sulla linea: QMAKE_CFLAGS + = -fno-keep-inline-dllexport
Modifica: QMAKE_CFLAGS + = -fno-keep-inline-dllexport -std = c ++ 11
Gli effetti sono immediati! 🙂