【发布时间】:2013-01-27 13:25:54
【问题描述】:
当我从 Xcode4.6 运行以下代码 sn-p 时,它编译并运行良好。但是当我尝试使用命令行工具(clang++)编译它时,它却失败了。
#include <iostream>
#include <memory>
int main(int argc, const char * argv[])
{
std::unique_ptr<int> foo(new int(0));
// insert code here...
std::cout << "Hello, this is cool giri World!\n";
return 0;
}
这里是编译日志:
$ clang --version Apple LLVM 版本 4.2 (clang-425.0.24) (基于 LLVM 3.2svn) 目标:x86_64-apple-darwin12.2.0 线程模型:posix $ clang++ main.cpp -stdlib=libc++ -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/c++/4.2.1/ -I /usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/include/ main.cpp:7:10:错误:命名空间“std”中没有名为“unique_ptr”的成员 std::unique_ptr foo(new int(0)); ~~~~~^ main.cpp:7:24: 错误:对于函数式强制转换或类型构造,预期为 '(' std::unique_ptr foo(new int(0)); ~~~^ main.cpp:7:26:错误:使用未声明的标识符“foo” std::unique_ptr foo(new int(0)); ^ 产生 3 个错误。【问题讨论】:
-
是的,我也试过了。结果相同。
-
clang++ -std=c++11找不到std::unique_ptr的定义,即使#include <memory>也是如此。奇怪的编译器这个。使用 gcc。 -
将 -stdlib=libc++ 添加到您的编译 cmdline 并链接 cmdline。奇怪,我知道,但要这样做。