lwip调试 DEBUG printf hu hd hx lu ld lx

1 篇文章 0 订阅
d,lx,ld,lu //这几个都是输出32位的
hd,hx,hu //这几个都是输出16位数据的,
hhd,hhx,hhu //这几个都是输出8位的,
lld,ll,llu,llx //这几个都是输出64位的

%hu //代表以 unsigned short格式输出整数
%hx //代表以16进制的 输出short类型的整数
#define X8_F "hhx"

#define U16_F "hu"
#define S16_F "hd"
#define X16_F "hx"
#define U32_F "lu"
#define S32_F "ld"
#define X32_F "lx" 

#define SZT_F "uz"

​

d,lx,ld,,lu,这几个都是输出32位的
hd,hx,hu,这几个都是输出16位数据的,
hhd,hhx,hhu,这几个都是输出8位的,
lld,llu,llx,这几个都是输出64位的,

​

LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE,
    ("ethernet_input: dest:%"X8_F":%"X8_F":%"X8_F":%"X8_F":%"X8_F":%"X8_F", src:%"X8_F":%"X8_F":%"X8_F":%"X8_F":%"X8_F":%"X8_F", type:%"X16_F"\n",
     (unsigned)ethhdr->dest.addr[0], (unsigned)ethhdr->dest.addr[1], (unsigned)ethhdr->dest.addr[2],
     (unsigned)ethhdr->dest.addr[3], (unsigned)ethhdr->dest.addr[4], (unsigned)ethhdr->dest.addr[5],
     (unsigned)ethhdr->src.addr[0], (unsigned)ethhdr->src.addr[1], (unsigned)ethhdr->src.addr[2],
     (unsigned)ethhdr->src.addr[3], (unsigned)ethhdr->src.addr[4], (unsigned)ethhdr->src.addr[5],
     (unsigned)htons(ethhdr->type)));
int printf(const char *format,[argument]);

format 参数输出的格式,定义格式为:%[flags][width][.perc][F|N|h|l]type

也就是有5类,1.flage 对齐 ,如右对齐。
2.width 显示数值的宽度
3.perc 小数点后面的位数
4.指针是否是远指针或整数是否是长整数 
5.type ,必备的,含义如下: 
d 有符号10进制整数 
i 有符号10进制整数 
o 无符号8进制整数 
u 无符号10进制整数…… 等。

%后h已经代表了短整形数据,为什么还要加d才可以正常显示?
因为:其中第5类是必备的,其他4个是可选的。而h不是第5类的(第4),故需要后面带一个第5类的d或其他。

printf("MaxUnsShortint = %hu\n",MaxUnsShortint);中%hu 是4和5,表示非负短整型数据。

由于u和d都在第5类中,故有其中一个就可以了。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值