我在Mac上运行这样的代码:
#include <atomic>
#include <iostream>
#include <utility>
#include <atomic>
struct A { int a[100]; };
struct B { int x, y; };
int main()
{
std::cout << std::boolalpha
<< "std::atomic<A> is lock free? "
<< std::atomic<A>{}.is_lock_free() << '\n'
<< "std::atomic<B> is lock free? "
<< std::atomic<B>{}.is_lock_free() << '\n';
}
错误信息是: 架构x86_64的未定义符号: “___atomic_is_lock_free”,引自: 在testassembly.o中的_main ld:找不到架构x86_64的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
is_lock_free是c ++标准库的一部分,对我来说似乎很奇怪。你对此有什么想法吗?