O título é bastante auto-descritivo. Eu baixei o Qt Creator 2.7.0 e estou tentando compilar algum código C ++ 11 básico:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
x *= 2;
}
Estou recebendo o seguinte erro:
range based for loops are not allowed in c++ 98 mode
No entanto, de acordo com este artigo, esta versão do Qt Creator suporta C ++ 11. Então, como eu o habilito?
Respostas:
De acordo com este site, adicione
CONFIG += c++11
ao seu arquivo .pro (veja na parte inferior dessa página da web). Requer Qt 5.
As outras respostas, sugerindo
QMAKE_CXXFLAGS += -std=c++11
(ouQMAKE_CXXFLAGS += -std=c++0x
)também trabalha com Qt 4.8 e gcc / clang.
fonte
-std=c++11
, também deverá suportar o-std=c++0x
sinalizador (obsoleto) , e os dois sinalizadores deverão ter efeitos idênticos (o que aparentemente não é o caso em sua máquina). Se um compilador suportar-std=c++0x
, isso não significa que ele entenda-std=c++11
. Portanto, escolher-std=c++0x
como padrão para o modo de compatibilidade C ++ 11 é uma escolha razoável. Na minha máquina, pelo menos de acordo com a página de manual ,-std=c++0x
e-std=c++11
são idênticos.-std=c++11
se o compilador suportar, e o Qt poderia ser inteligente o suficiente para fazê-lo. Bem, se esta questão dói-lhe muito, você poderia enviar um relatório de bug ...Adicione isso ao seu arquivo .pro
ou
fonte
Como alternativa para lidar com os dois casos abordados na excelente resposta de Ali, costumo acrescentar
aos meus arquivos de projeto. Isso pode ser útil quando você realmente não se importa muito com qual versão do Qt as pessoas estão usando em sua equipe, mas você deseja que elas tenham o C ++ 11 ativado em qualquer caso.
fonte
adicione ao seu arquivo qmake
fonte
Se você estiver usando uma versão anterior do QT (<5), tente este
fonte
O único local em que consegui fazê-lo funcionar é pesquisando em:
Então na linha:
Editar:
fonte