考虑这个简单的代码:解析的外部符号 “的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