简单的程序不能用 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&lt;int&gt;

【讨论】:

以上是关于简单的程序不能用 qtcreator 编译的主要内容,如果未能解决你的问题,请参考以下文章

调试期间 Qt Creator 中的外设寄存器

Qt Creator的下载和安装

亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

qt 只能写c++程序吗,不能写c语言的程序吗,要写c只能用 gtk吗?

VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

麒麟V10源码编译qtCreator4.0.3记录