2011-11-10 4 views
2

Mac에서 C++ 11 기능을 컴파일하려고합니다. 나는 지금까지 두 가지 다른 것을 시도했다. 첫째, 최신 엑스 코드 (4.2) 나는이 컴파일 할 때 "C++ 11 개 기능"하지만를 지원하기 위해 주장 :Xcode 4.2 및 람다 식 (OSX Lion)

#include <iostream> 

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

내가 처음 브래킷, "예상 표현"오류가 발생합니다 ([) . 나는 람다 표현식이 새로운 C++ 11 기능에 포함되어 있지 않다고 생각합니다.

그런 다음 작품으로 주변에 나는 4.6 바이너리 http://hpc.sourceforge.net/에서 GCC를 다운로드하지만 GCC를-4.6 (/usr/local/bin/gcc-4.6 -std = C + +0 Test.cpp에) 사용할 때 얻을 :

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

표준 라이브러리를 찾을 수 없다고 생각합니까?

감사합니다.

답변

6

XCode 4.2는 Apple에서 패치 한 늦은 Clang 2.9와 함께 제공됩니다. 그것은 lambda와 uniform initializers를 지원하지 않습니다. Clang 3.0도 그러지 않으므로 적어도 Clang 3.1 (현재 6 개월 후 예정)까지 기다려야합니다.

또는 람다 지원을 위해 Macports의 GCC 4.6을 사용할 수 있습니다. 당신의 갱신에


UPDATE : 당신은 g++와 연결, 또는 수동으로 -lstdc++를 추가해야합니다.

+0

aha! 그것은 효과가있다! 대신 g ++를 사용해야했습니다. 최소한 지금은 수동으로 컴파일 할 수 있습니다. 감사! –

0

람다에 대한 지원은 gcc 4.5로 추가되었습니다. Xcode는 gcc 4.2를 사용하며 최신 버전으로 업그레이드 될 가능성은 거의 없습니다 (대부분 GPL3로 라이센스 된 최신 버전의 gcc로 인해 가능할 수 있습니다). gcc 4.5 또는 4.6에서 작동하도록 Xcode를 구성 할 수 있다면 알려주십시오 ... Apple이 Clang으로 전환하고 있습니다. Clang이 (대부분의) C++ 11 기능을 곧 지원할 수 있기를 바랍니다.

+2

piokuc : Clang은 lambda가 아닌 C++ 11 기능을 이미 지원합니다 (불행히도). 현재 상황을 보려면 다음을 참조하십시오. http://clang.llvm.org/cxx_status.html – rubenvb

+0

@rubenvb 링크 – piokuc

+0

에 감사드립니다. 람다 지원이 최근에 Clang의 svn 버전에 추가 된 것처럼 보입니다. 그래서 Xcode의 다음 버전 (4.3 버전)에는 C++ 람다 지원 기능이 추가되었습니다. –