Название довольно информативно. Я скачал Qt Creator 2.7.0 и пытаюсь скомпилировать базовый код C ++ 11:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
x *= 2;
}
Я получаю следующую ошибку:
range based for loops are not allowed in c++ 98 mode
Тем не менее, согласно этой статье, эта версия Qt Creator поддерживает C ++ 11. Так как мне это включить?
Ответы:
По данным этого сайта добавить
CONFIG += c++11
в ваш файл .pro (см. внизу этой веб-страницы). Требуется Qt 5.
Другие ответы, предлагая
QMAKE_CXXFLAGS += -std=c++11
(илиQMAKE_CXXFLAGS += -std=c++0x
)также работать с Qt 4.8 и gcc / clang.
источник
-std=c++11
, то она также должна поддерживать (устаревший)-std=c++0x
флаг, и оба флага должны иметь идентичные эффекты (что, очевидно, не на вашем компьютере). Если компилятор поддерживает-std=c++0x
, это не значит, что он понимает-std=c++11
. Поэтому выбор-std=c++0x
режима по умолчанию для режима совместимости C ++ 11 является разумным выбором. На моей машине, по крайней мере, в соответствии со страницей руководства ,-std=c++0x
и-std=c++11
идентичны.-std=c++11
если компилятор поддерживает это, и Qt может быть достаточно умен, чтобы сделать это. Что ж, если эта проблема причинит вам столько вреда, вы можете отправить сообщение об ошибке ...Добавьте это в ваш .pro файл
или
источник
В качестве альтернативы для обработки обоих случаев, рассмотренных в превосходном ответе Али, я обычно добавляю
в мои файлы проекта. Это может быть удобно, когда вас не особо волнует, какую версию Qt используют люди в вашей команде, но вы хотите, чтобы в любом случае они включили C ++ 11.
источник
добавить в свой файл qmake
источник
Если вы используете более раннюю версию QT (<5), попробуйте это
источник
Единственное место, где я успешно справился, это поиск по:
Тогда на линии:
Редактировать :
источник