Le titre est assez auto-descriptif. J'ai téléchargé Qt Creator 2.7.0 et j'essaie de compiler du code de base C ++ 11:
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?
Réponses:
Selon ce site ajouter
CONFIG += c++11
à 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
(ouQMAKE_CXXFLAGS += -std=c++0x
)fonctionne également avec Qt 4.8 et gcc / clang.
la source
-std=c++11
, alors elle devrait également prendre en charge l'-std=c++0x
indicateur (obsolète) , et les deux indicateurs sont censés avoir des effets identiques (ce qui n'est apparemment pas le cas sur votre machine). Si un compilateur prend en charge-std=c++0x
, cela ne signifie pas qu'il comprend-std=c++11
. Par conséquent, choisir-std=c++0x
par défaut pour le mode de compatibilité C ++ 11 est un choix raisonnable. Sur ma machine, au moins selon la page de manuel ,-std=c++0x
et-std=c++11
sont identiques.-std=c++11
si le compilateur le supporte, et Qt pourrait être assez intelligent pour le faire. Eh bien, si ce problème vous fait trop mal, vous pouvez déposer un rapport de bogue ...Ajoutez ceci à votre fichier .pro
ou
la source
Comme alternative pour traiter les deux cas abordés dans l'excellente réponse d'Ali, j'ajoute généralement
à 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 qu'ils aient C ++ 11 activé dans tous les cas.
la source
ajouter à votre fichier qmake
la source
Si vous utilisez une version antérieure de QT (<5), essayez ceci
la source
Le seul endroit où j'ai réussi à le faire fonctionner est en recherchant dans:
Puis à la ligne:
Éditer :
la source