TI例程中lwip的一个坑

[复制链接]
2737|4
 楼主| yzjgod 发表于 2012-12-17 15:46 | 显示全部楼层 |阅读模式
tcp.h中有这么一句:


  1. /* Modified by TI to work around an IAR 5.41 compiler bug */
  2. /* TI replacement definitions... */
  3. #define TCP_SEQ_LT(a,b)     ((s32_t)(a) < (s32_t)(b))
  4. #define TCP_SEQ_LEQ(a,b)    ((s32_t)(a) <= (s32_t)(b))
  5. #define TCP_SEQ_GT(a,b)     ((s32_t)(a) > (s32_t)(b))
  6. #define TCP_SEQ_GEQ(a,b)    ((s32_t)(a) >= (s32_t)(b))
这个在边界处理的时候有个大坑,把我坑苦了啊,要改回去:


  1. #define TCP_SEQ_LT(a,b)     ((s32_t)((a)-(b)) < 0)
  2. #define TCP_SEQ_LEQ(a,b)    ((s32_t)((a)-(b)) <= 0)
  3. #define TCP_SEQ_GT(a,b)     ((s32_t)((a)-(b)) > 0)
  4. #define TCP_SEQ_GEQ(a,b)    ((s32_t)((a)-(b)) >= 0)
周知!

shenmu2012 发表于 2012-12-18 18:02 | 显示全部楼层
没怎么看懂的,顶一下的,懂这个的来看看撒的啊
Jacobseu 发表于 2012-12-18 18:56 | 显示全部楼层
superman2012 发表于 2012-12-19 16:15 | 显示全部楼层
不太明白,感觉到这两个代码差不多呀
 楼主| yzjgod 发表于 2012-12-20 10:06 | 显示全部楼层
这段代码在比较0X7FFFFFFF和0X80000000的时候就有问题了,lwip用的都是无符号数,应该是后边的比前面的大,转成带符号数后就不对了,但是作差没有这个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

370

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部