【发布时间】:2020-11-25 19:14:12
【问题描述】:
#include <atomic>
#include <iostream>
using namespace std;
struct Simple{
int a = 0;
int b = 0;
};
struct WithPointer{
int *a = nullptr;
int b = 0;
};
int main(int argc, char const *argv[])
{
atomic<Simple> simple;
cout<<simple.is_lock_free()<<"\n";
atomic<Simple*> simple_p;
cout<<simple_p.is_lock_free()<<"\n";
atomic<WithPointer> with_pointer;
cout<<with_pointer.is_lock_free()<<"\n";
return 0;
}
此示例适用于 Simple 结构,但不适用于 WithPointer 结构。 我得到以下编译错误,为什么? 我该怎么办。
g++ main.cpp
/usr/bin/ld: /tmp/cc49YEoR.o: in function `std::atomic<WithPointer>::is_lock_free() const':
1a.cpp:(.text._ZNKSt6atomicI11WithPointerE12is_lock_freeEv[_ZNKSt6atomicI11WithPointerE12is_lock_freeEv]+0x1d): undefined reference to `__atomic_is_lock_free'
collect2: error: ld returned 1 exit status
【问题讨论】:
-
相关/欺骗stackoverflow.com/questions/44891523/…虽然没有得到答复。
-
我在加载其他原子操作时也遇到同样的错误
-
看我的回答。与
-latomic链接应该修复所有未定义的引用。