我在我的程序中使用std::atomic<unsigned int>
。如何使用printf
打印其值?因为如果我只使用%u
它不起作用。我知道我可以使用cout
,但我的程序中充斥着printf
次调用,我不想替换它们。以前我使用的是unsigned int
而不是std::atomic<unsigned int>
,因此我只使用%u
,因此打印工作正常。
答案 0 :(得分:14)
template<typename BaseType>
struct atomic
{
operator BaseType () const volatile;
}
使用类型转换来提取基础值。
printf("%u", unsigned(atomic_uint));
答案 1 :(得分:3)
另一个选项,您可以使用负载。例如:
std::atomic<unsigned int> a = { 42 };
printf("%u\n", a.load());