2011-06-27 151 views
6

我在我的程序中使用了std::atomic<unsigned int>。如何使用printf打印其价值?因为如果我只使用%u它不起作用。我知道我可以使用cout,但我的程序散布着printf调用,我不想替换它们中的每一个。以前我使用的是unsigned int而不是std::atomic<unsigned int>,所以我只是使用%u,因此打印效果很好。如何打印std :: atomic的值<unsigned int>

+0

它可能会帮助,如果你告诉我们,你已经尝试的代码,以及它是如何没有工作(输出或错误信息) – crashmstr

+2

'的std ::原子<>'有'负载()'成员函数阅读价值(原子:-)。你可以使用那个。 –

+0

你真的需要一个原子变量吗? 'std :: atomic'用于对并发问题的变量进行内存访问。 – AJG85

回答

13
template<typename BaseType> 
struct atomic 
{ 
    operator BaseType() const volatile; 
} 

使用类型转换来提取基础值。

printf("%u", unsigned(atomic_uint)); 
相关问题