我正在尝试让 C++11 特性在我的 Mac 上编译。到目前为止,我已经尝试了两种不同的方法。首先,最新的 Xcode (4.2) 声称支持“C++11 特性”,但是当我尝试编译它时:
#include <iostream>
int main()
{
using namespace std;
int n = [] (int x, int y) { return x + y; }(5, 4);
cout << n << endl;
}
第一个括号 ([) 出现错误“预期表达式”。我猜 lambda 表达式没有包含在新的 C++11 特性中?
然后,作为解决方法,我从 http://hpc.sourceforge.net/ 下载了 gcc 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
...
我在想是不是找不到标准库的问题?
谢谢!
最佳答案
XCode 4.2 附带由 Apple 修补的晚期 Clang 2.9。它不支持 lambda 或统一初始化器。 Clang 3.0 也没有,所以您至少要等到 Clang 3.1(从现在起 6 个月后到期)。
或者,您可以使用 Macports 的 GCC 4.6 来支持 lambda。
更新您的更新:您需要链接g++
,或手动添加-lstdc++
。
关于c++ - Xcode 4.2 和 lambda 表达式 (OSX Lion),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082354/