简单的程序不能用qtcreator编译

时间:2011-11-02 12:46:07

标签: c++ qt gcc

我安装了qt 4.7.4和gcc 4.6.1。我试图编译这个程序,但它不会为我编译:
为什么我不能编译这段代码?

#include <QApplication>
#include <iostream>
using std::cout;

int main(int argc, char** argv)
{
    QApplication app(argc,argv);
    int a[] = {1,2};
    for (auto e : a)
    {
        cout << e << '\n';
    }
    return app.exec();
}  

错误:
C:... \ main.cpp:9:错误:'e'没有命名类型

5 个答案:

答案 0 :(得分:4)

for (auto e : a)
是一个基于c ++ 11标准的循环范围。您需要使用-std = c ++ 0x命令行在gcc中启用c ++ 11。

答案 1 :(得分:2)

对我而言,这是有效的(g ++ 4.6.1,Qt 4.7.1):

g++ --std=c++0x -I$QTDIR/include/QtGui -I$QTDIR/include \
    test.cpp -L$QTDIR/lib -lQtCore -lQtGui

答案 2 :(得分:1)

你需要--std = c ++ 0x编译器标志。

答案 3 :(得分:0)

我的猜测是qtcreator(和qmake)不会向编译器提供指示它使用C ++ 2011的标志。

答案 4 :(得分:0)

首先,您要确保使用C ++ 11方言编译C ++文件(即使用g++标记到auto),因为您使用for类型推断特征

然后,我认为您的a循环可能无效。也许您希望std::vector<int>成为{{1}}