C++ 关于uint64的原子_fetch_add的奇怪行为
我有以下代码:C++ 关于uint64的原子_fetch_add的奇怪行为,c++,C++,我有以下代码: #include "atomic" std::atomic<uint64_t>bid_index(0); uint64_t generate_bid_key(){ return std::atomic_fetch_add(&bid_index,1); } 有人能帮忙吗?std::atomic_fetch_add从第二个参数1推断操作数的模板类型,该参数为int,但与原子的模板类型(uint64_t)不匹配。把它做成uint64,它就会被接受 retur
#include "atomic"
std::atomic<uint64_t>bid_index(0);
uint64_t generate_bid_key(){
return std::atomic_fetch_add(&bid_index,1);
}
有人能帮忙吗?std::atomic_fetch_add从第二个参数1推断操作数的模板类型,该参数为int,但与原子的模板类型(uint64_t)不匹配。把它做成uint64,它就会被接受
return std::atomic_fetch_add(&bid_index,1ULL);
或
您还可以使用原子类的更直接的fetch\u add方法,这可能更简单。请检查您的代码格式,最好发布一篇文章,请参阅我之前评论中的链接。要么是你没有发布的代码中有一个bug,要么是你的编译器不符合汉克斯,我已经看到了。这对我来说是一个编译器问题,所以我真的不知道我需要发布多少代码。基本上我有一个全局变量和一个函数调用。以及行返回std::atomic_fetch_add&bid_index,1;正在抛出编译器错误您需要准确地发布您正在编译的内容以产生错误。我们谁也说不出你的程序中有没有你没有发布的错误。链接中对此进行了解释。不要解释错误消息。错误消息说明的不止这些,您遗漏的部分包含有用的信息。。
return std::atomic_fetch_add(&bid_index,1ULL);
return std::atomic_fetch_add(&bid_index,(uint64_t)1);