考慮這個簡單的代碼:解析的外部符號 「的std :: atomic_fetch_add」
#include <iostream>
#include <atomic>
void add(std::atomic<double> & a, double c)
{
std::atomic_fetch_add(&a, c);
}
int main()
{
std::atomic<double> a;
a.store(0);
std::cout << a.load() << std::endl;
add(a, 5.0);
std::cout << a.load() << std::endl;
std::cin.get();
}
編譯它會導致:
錯誤LNK2019:解析外部符號「雙__cdecl的std :: atomic_fetch_add( struct std :: atomic *,double)「(?? $ atomic_fetch_add @ N @ std @@ YANPAU?$ atomic @ N @ 0 @ N @ Z)在函數」void __cdecl add(struct std :: atomic &,double )「(?add @@ YAXAAU?$ atomic @ N @ std @@ N @ Z)
根據this,atomic_fetch_add
定義在<atomic>
,那麼發生了什麼?
誰告訴你'std :: atomic'專門用於'double'? – Slava
這是,但[沒有重載需要雙](http://en.cppreference.com/w/cpp/atomic/atomic_fetch_add) – Borgleader
@Slava我沒有看到任何我不能用它的地方'double'! – Jaber