2011-11-10 40 views
2

我正試圖讓C++ 11的功能在我的Mac上編譯。到目前爲止,我嘗試了兩種不同的方法。首先,最新的Xcode(4.2)聲稱,當我嘗試編譯此支持「C++ 11個功能」,但是:Xcode 4.2和lambda表達式(OSX Lion)

#include <iostream> 

int main() 
{ 
    using namespace std; 
    int n = [] (int x, int y) { return x + y; }(5, 4); 
    cout << n << endl; 
} 

我得到一個錯誤,「預期的表達,」第一個括號([) 。我猜lambda表達式不包含在新的C++ 11功能中?

然後,周圍的工作,我下載的gcc從http://hpc.sourceforge.net/ 4.6二進制代碼,但是當我使用gcc-4.6(/usr/local/bin/gcc-4.6 -std =的C++ 0x TEST.CPP)我得到:

Undefined symbols for architecture x86_64: 
    "std::cout", referenced from: 
     _main in cctnMUFF.o 
... 

我在想這是沒有找到標準庫的問題?

謝謝!

回答

6

XCode 4.2隨附Clang 2.9,由Apple修補。它不支持lambda或者統一的初始化器。鏗鏘3.0也沒有,所以你必須等到至少3.1(從現在起6個月內到期)。

或者,您可以使用Macports的GCC 4.6進行lambda支持。


更新到最新動態:您需要g++鏈接,或手動添加-lstdc++

+0

aha!有效!只需要使用g ++。至少我現在可以手動編譯。謝謝! –

0

在gcc 4.5中增加了對lambda的支持。 Xcode使用gcc 4.2,它不太可能會升級到更新的版本(很可能是由於GPL3許可的新版本的gcc)。讓我們知道,如果您設法配置Xcode使用gcc 4.5或4.6 ... Apple因此切換到Clang。讓我們希望Clang很快將支持(大部分)C++ 11功能...

+2

piokuc:Clang lready支持大量的C++ 11功能,而不是lambda的(非常不幸)。看到這裏的事情的當前狀態:http://clang.llvm.org/cxx_status.html – rubenvb

+0

@rubenvb感謝您的鏈接 – piokuc

+0

最近lambda支持已被添加到最新版本的Clang。所以希望下一代(4.3版本)的Xcode也能支持C++ lambda。 –