c – printf格式的警告不适用于uint32_t类型的变量

我刚刚了解了C,和
我知道这是一个基本问题,但我无法弄清楚如何解决这个问题.例如,我有一行
printf("value :%d\n",var.value);

格式不适合,因为它显示下面的错误

*格式’%d’需要类型’int’,但参数3的类型为’uint32_t *’

我已经查看了cplusplus的参考:cplusplus print ref

但它没有明确说明如何打印类型为uint32_t *(同样uint16_t)的值.

任何解释都将非常感激.

解决方法

您试图将指向uint32_t的指针打印为int.
你必须做两件事:

>取消引用指针,以便打印uint32_t而不是指针.
>使用正确的printtf格式说明符

格式化uint32_t的正确方法是使用宏PRIu32,它将字符串扩展为格式字符.

就是这样

printf("%"PRIu32"\n",*var.value);

您可能在一个通用平台上,其中unsigned int与uint32_t相同,在这种情况下您可以这样做:

printf("%u\n",*var.value);

(注意,%u代替使用%d的代码,%u代表unsigned int,而%d代表signed int)

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...