Tytuł jest dość samoopisowy. Pobrałem Qt Creator 2.7.0 i próbuję skompilować podstawowy kod C ++ 11:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
x *= 2;
}
Otrzymuję następujący błąd:
range based for loops are not allowed in c++ 98 mode
Jednak zgodnie z tym artykułem ta wersja Qt Creator obsługuje C ++ 11. Jak więc to włączyć?
Odpowiedzi:
Według tej strony dodaj
CONFIG += c++11
do pliku .pro (zobacz na dole tej strony internetowej). Wymaga Qt 5.
Inne odpowiedzi, sugerujące
QMAKE_CXXFLAGS += -std=c++11
(lubQMAKE_CXXFLAGS += -std=c++0x
)działa również z Qt 4.8 i gcc / clang.
źródło
-std=c++11
, to powinna również obsługiwać-std=c++0x
flagę (przestarzała) , a obie flagi powinny mieć identyczne efekty (co najwyraźniej nie ma miejsca na twoim komputerze). Jeśli kompilator obsługuje-std=c++0x
, nie oznacza to, że rozumie-std=c++11
. Dlatego wybranie-std=c++0x
jako domyślnego trybu zgodności z C ++ 11 jest rozsądnym wyborem. Na moim komputerze, przynajmniej według strony człowieka ,-std=c++0x
i-std=c++11
są identyczne.-std=c++11
gdyby kompilator go obsługiwał, a Qt mógłby być na tyle sprytny, aby to zrobić. Cóż, jeśli ten problem cię tak boli, możesz zgłosić błąd ...Dodaj to do swojego pliku .pro
lub
źródło
Jako alternatywę dla załatwienia obu przypadków, do których odnosi się doskonała odpowiedź Ali, zwykle dodam
do moich plików projektu. Może to być przydatne, gdy tak naprawdę nie zależy ci na tym, której wersji Qt używają ludzie w twoim zespole, ale chcesz, aby w każdym przypadku włączono C ++ 11.
źródło
dodaj do swojego pliku qmake
źródło
Jeśli używasz wcześniejszej wersji QT (<5), spróbuj tego
źródło
Jedyne miejsce, w którym udało mi się to udać, to wyszukiwanie w:
Następnie na linii:
Edytować :
źródło