我安装了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'没有命名类型
答案 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}}