Ish*_*eet 2 c printf warnings data-structures
我在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
Run Code Online (Sandbox Code Playgroud)
错误来自的行
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]);
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
和ethadder是struct uip_eth_addr的指针
PACKED struct uip_eth_addr {
u8_t addr[6];
} ;
Run Code Online (Sandbox Code Playgroud)
如果有人可以分享一下这个警告的话.我只知道%0.2x意味着字符为两位数HEX.救命!
格式字符串%0.2x
表示:
由于精度定义了要输出的最小位数,因此将忽略零填充(来自规范).你可以使用%.2x
或者%02x
那样做你想做的事.
要得到
1
11
55555
Run Code Online (Sandbox Code Playgroud)
你用的%4x
.
01
11
111
Run Code Online (Sandbox Code Playgroud)
将会 %4.2x
0001
0011
55555
Run Code Online (Sandbox Code Playgroud)
会是%04x
或%.4x
.
请注意,值已签名时存在差异.精度定义了数字的位数,这意味着该值将占用符号的另一个空间.使用最小输出宽度,已经计算了符号:
$ printf "%.5i\n%05i\n" '-11' -11
-00011
-0011
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5998 次 |
最近记录: |