1
根據C++標準,std::atomic
可與任何可複製類型組合使用。但是,GCC會產生以下錯誤消息:GCC中可複製類型的原子對象
#include <atomic>
struct TriviallyCopyableType {
int a, b, c, d;
};
int main() {
std::atomic<TriviallyCopyableType> a;
a.store({}); // undefined reference to `__atomic_store_16'
a.is_lock_free(); // undefined reference to `__atomic_is_lock_free'
}
Clang和Microsoft的編譯器不會抱怨。難道我做錯了什麼?這是一個已知的問題嗎?畢竟,GCC 4.4在幾年前實施了原子操作。除了使用不同的編譯器之外,是否有任何解決方法?由於Clang實現了無鎖的std::atomic<TriviallyCopyableType>
,我不想使用顯式鎖定。
罰款上gcc 6.3。我認爲你需要一個更新的編譯器。你的古老。 –
那麼,我不會叫5.4古... – user1494080
看來[這個答案](http://stackoverflow.com/a/15204653/1120273)仍然是相關的。可能你需要包含'-latomic'。 –