![](/img/trans.png)
[英]Why is std::atomic<T>::is_lock_free() not static as well as constexpr?
[英]is_lock_free not defined in std::atomic<T> in gcc 4.7.2?
我遇到這個編譯錯誤
function std::atomic::is_lock_free() const: error: undefined reference to '__atomic_is_lock_free'
在Linux上使用gcc 4.7.2編譯代碼如下所示。
struct S {
int a;
int b;
};
std::atomic<S> s;
cout << s.is_lock_free() << endl;
- 當無鎖指令不可用時(通過硬件或OS支持),原子操作留作函數調用以由庫解析。 由於時間限制和API尚未最終確定,因此沒有GCC 4.7提供的libatomic。 這很容易通過遇到以
__atomic_*
開頭的__atomic_*
滿足的外部符號來確定。
由於GCC 4.7附帶沒有libatomic
,因此您需要使用另一個實際支持您所需功能的編譯器或提供缺少的功能( 示例實現 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.