gpt4 book ai didi

c - 警告 :0 flag ignored with precision and '%x' gnu_printf format

转载 作者:行者123 更新时间:2023-12-01 22:58:24 25 4
gpt4 key购买 nike

我在用 C 编译时收到以下警告。

   ../tcpuip/uip_arp.c: In function 'display_arp_table':
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_p
rintf format
../tcpuip/uip_arp.c:547: warning: '0' flag ignored with precision and '%x' gnu_printf format

错误来的那一行是

        RELEASE_MSG("MAC: %0.2x.%0.2x.%0.2x.%0.2x.%0.2x.%0.2x  ",(unsigned char)tabptr->ethaddr.addr[0],(unsigned char)tabptr->ethaddr.addr[1],(unsigned char)tabptr->ethaddr.addr[2],(unsigned char)tabptr->ethaddr.addr[3],(unsigned char)tabptr->ethaddr.addr[4],(unsigned char)tabptr->ethaddr.addr[5]);

tabptr 是struct arp_entry 的指针

PACKED struct arp_entry {
u16_t ipaddr[2];
struct uip_eth_addr ethaddr;
u8_t time;
#ifdef _ALIGNED_
u8_t dummy;
#endif
}

ethadder 是 struct uip_eth_addr 的指针

PACKED struct uip_eth_addr {
u8_t addr[6];
} ;

如果有人能分享一些关于这个警告的信息,请告诉我。我只知道 %0.2x 表示字符为两位十六进制。帮助!

最佳答案

格式字符串%0.2x表示:

  • 打印一个无符号的十六进制整数
  • 至少打印两个数字
  • 从左边用零填充

由于精度定义了要输出的最小位数,因此将忽略零填充(根据规范)。您可以使用 %.2x%02x 来执行您想要的操作。

得到

   1
11
55555

您将使用 %4x

  01
11
111

将是 %4.2x

0001
0011
55555

将是 %04x%.4x

请注意,值有符号时是有区别的。精度定义了位数 的数量,这意味着该值将多占用一个符号空间。对于最小输出宽度,符号已经计算在内:

$ printf "%.5i\n%05i\n" '-11' -11
-00011
-0011

关于c - 警告 :0 flag ignored with precision and '%x' gnu_printf format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com