2011-11-02 36 views
0

我安裝了qt 4.7.4和gcc 4.6.1。我試圖編譯這個程序,但它不會爲我編譯:
爲什麼我不能編譯這段代碼?簡單的程序不會用qtcreator編譯

#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' 沒有指定類型

+7

我想我講大家,當我說我們很抱歉聽到這個消息。你的問題是什麼?謹慎地告訴我們錯誤是什麼? – Widor

+0

@Widor這個問題(隱含地)是爲什麼我不能編譯它,但我會更新它。 – smallB

+1

你用什麼命令來編譯它? (你使用C++ 11,所以你需要通過編譯器標誌告訴g ++:嘗試'g ++ file.cpp --std = C++ 0x') – Tom

回答

4

for (auto e : a)
是一個基於C++ 11標準的循環範圍。你需要使用-std = C++ 0x命令行在gcc中啓用C++ 11。

+0

哪裏(通過QTCreator)我想這些選項? – smallB

+0

我從來沒有使用過QtCreator。但是這個鏈接應該回答這個問題。 http://stackoverflow.com/questions/2987062/configuring-the-gcc-compiler-switches-in-qt-qtcreator-and-qmake – mkaes

+0

是的,這似乎解決了這個問題,很可惜你不能通過一些對話來設置它。謝謝。 – smallB

0

我的猜測是,qtcreator(和QMAKE)不喂帶有標誌的編譯器指示它使用C++ 2011。

0

首先,您要確保使用auto類型推斷功能,您的C++文件使用C++ 11方言(即使用-std=c++0x標誌到g++)進行編譯。

然後,我認爲您的for循環可能無效。也許你想a是一個std::vector<int>

1

你需要--std = C++ 0x編譯器標誌。

2

對我來說,這個工程(G ++ 4.6.1,4.7.1的Qt):

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