简单的程序不能用 qtcreator 编译
Posted
技术标签:
【中文标题】简单的程序不能用 qtcreator 编译【英文标题】:Simple program won't compile with qtcreator 【发布时间】:2011-11-02 12:46:06 【问题描述】:我安装了 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' 没有命名类型
【问题讨论】:
当我说我们很抱歉听到这个消息时,我想我代表每个人。你的问题是什么?愿意告诉我们错误是什么吗? @Widor 问题(隐含地)是为什么我不能编译它,但我会更新它。 你用什么命令编译它? (您使用 c++11,因此您需要通过编译器标志告诉 g++:尝试g++ file.cpp --std=c++0x
)
很可能你的编译器不理解这个新的 c++ 特性。
@Tom 我想把这些选项放在哪里(通过 QTCreator)
【参考方案1】:
for (auto e : a)
是来自 c++11 标准的基于范围的 for 循环。您需要在 gcc 中使用 -std=c++0x 命令行启用 c++11。
【讨论】:
我想把这些选项放在哪里(通过 QTCreator)? 我从未使用过 QtCreator。但是这个链接应该回答这个问题。 ***.com/questions/2987062/… 是的,这似乎解决了问题,很遗憾您无法通过某些对话框进行设置。谢谢。【参考方案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
【讨论】:
【参考方案3】:您需要 --std=c++0x 编译器标志。
【讨论】:
【参考方案4】:我的猜测是 qtcreator(和 qmake)不会向编译器提供指示它使用 C++2011 的标志。
【讨论】:
【参考方案5】:首先,您要确保您的 C++ 文件是使用 C++11 方言编译的(即使用-std=c++0x 标志到g++
),因为您使用了auto
类型推断功能。
那么,我认为您的for
循环可能无效。也许您希望 a
成为 std::vector<int>
【讨论】:
以上是关于简单的程序不能用 qtcreator 编译的主要内容,如果未能解决你的问题,请参考以下文章
亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)
qt 只能写c++程序吗,不能写c语言的程序吗,要写c只能用 gtk吗?