我尝试编译简单的代码
#include <atomic>
int bar = 0;
void foo(std::atomic<int>&flag)
{ bar = flag; }
使用 clang++ 3.2(从 llvm.org 下载为 llvm 3.2;在 mac os.x 10.8.3 上失败并出现错误
/> clang++ -std=c++11 -stdlib=libc++ -O3 -march=native -c test.cc
在 test.cc:1 中包含的文件中:
/usr/include/c++/v1/atomic:576:17:错误:原子操作的第一个参数必须是指向非 const _Atomic 类型的指针('const _Atomic(int) *' 无效)
{return __c11_atomic_load(&__a_, __m);} ^ ~~~~~
/usr/include/c++/v1/atomic:580:53:注意:在此处请求成员函数“std::_ 1:: _ atomic_base::load”的实例化
operator _Tp() const _NOEXCEPT {return load();} ^
test.cc:5:9:注意:在此处请求成员函数“std::_ 1:: _ atomic_base::operator int”的实例化
bar = done;
当我使用 /usr/bin/clang++ 代替(操作系统或 Xcode 附带)时,它编译得很好。在这两种情况下,libc++ 都位于 /usr/lib/c++/v1 中。
我错过了什么?llvm 3.2 中是否还有另一个 libc++,但我错过了?(我在 clang3.2 树中找不到任何东西)。