Le titre est assez auto-descriptif. J'ai téléchargé Qt Creator 2.7.0 et j'essaie de compiler du code C++ 11 de base:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
x *= 2;
}
Je reçois l'erreur suivante:
range based for loops are not allowed in c++ 98 mode
Pourtant, selon cet article cette version de Qt Creator prend en charge C++ 11. Alors, comment puis-je l'activer?
Selon ce site add
CONFIG += c++11
dans votre fichier .pro (voir au bas de cette page Web). Il nécessite Qt 5.
Les autres réponses suggérant
QMAKE_CXXFLAGS += -std=c++11
(ou QMAKE_CXXFLAGS += -std=c++0x
)
travaille également avec Qt 4.8 et gcc/clang.
Ajoutez ceci à votre fichier .pro
QMAKE_CXXFLAGS += -std=c++11
ou
CONFIG += c++11
Au lieu de traiter les deux cas traités dans l'excellente réponse d'ALi, j'ajoute généralement
# With C++11 support
greaterThan(QT_MAJOR_VERSION, 4){
CONFIG += c++11
} else {
QMAKE_CXXFLAGS += -std=c++0x
}
à mes fichiers de projet. Cela peut être pratique lorsque vous ne vous souciez pas vraiment de la version de Qt que les gens utilisent dans votre équipe, mais que vous voulez que C++ 11 soit activé dans tous les cas.
ajouter à votre fichier qmake
QMAKE_CXXFLAGS+= -std=c++11
QMAKE_LFLAGS += -std=c++11
Si vous utilisez une version antérieure de QT (<5), essayez ceci.
QMAKE_CXXFLAGS += -std=c++0x
Le seul endroit où j'ai réussi à le faire fonctionner est en cherchant dans:
...\Qt\{5.9; ou votre version}\mingw {53_32; ou votre version}\mkspecs\win32-g ++\qmake.conf:
Puis à la ligne:
QMAKE_CFLAGS += -fno-keep-inline-dllexport
Modifier :
QMAKE_CFLAGS += -fno-keep-inline-dllexport -std=c++11