如何打印 std::atomic的值?

发布于 2024-11-17 11:43:58 字数 578 浏览 2 评论 0原文

我在程序中使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

聽兲甴掵 2024-11-24 11:43:58

另一种选择,您可以使用原子变量的 load() 方法。例如:

std::atomic<unsigned int> a = { 42 };
printf("%u\n", a.load());

another option, you can use the atomic variable's load() method. E.g.:

std::atomic<unsigned int> a = { 42 };
printf("%u\n", a.load());
她如夕阳 2024-11-24 11:43:58
template<typename BaseType>
struct atomic
{
    operator BaseType () const volatile;
}

使用类型转换来提取底层值。

printf("%u", unsigned(atomic_uint));
template<typename BaseType>
struct atomic
{
    operator BaseType () const volatile;
}

Use a typecast to pull out the underlying value.

printf("%u", unsigned(atomic_uint));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文