如何打印 std::atomic的值?
我在程序中使用 std::atomic
。如何使用 printf
打印其值?如果我只使用%u
,它不起作用。我知道我可以使用 std::cout,但我的程序中充满了 printf 调用,我不想替换它们中的每一个。以前我使用的是 unsigned int
而不是 std::atomic
,所以我只是在格式字符串中使用 %u
我的 printf 调用,因此打印工作得很好。
现在尝试打印 std::atomic
代替常规 unsigned int
时遇到的错误是:
错误:格式“%u”需要“unsigned int”类型的参数,但参数 2 的类型为“std::atomic
” [-Werror=format=]
I am using std::atomic<unsigned int>
in my program. How can I print its value using printf
? It doesn't work if I just use %u
. I know I can use std::cout
, but my program is littered with printf
calls and I don't want to replace each of them. Previously I was using unsigned int
instead of std::atomic<unsigned int>
, so I was just using %u
in the format string in my printf
call, and therefore printing worked just fine.
The error I'm getting when trying to print the std::atomic<unsigned int>
now in place of the regular unsigned int
is:
error: format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘std::atomic<unsigned int>’ [-Werror=format=]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
另一种选择,您可以使用原子变量的
load()
方法。例如:another option, you can use the atomic variable's
load()
method. E.g.:使用类型转换来提取底层值。
Use a typecast to pull out the underlying value.