开一个工作贴:lwip代码阅读

[复制链接]
5558|7
 楼主| dld2 发表于 2008-6-26 14:47 | 显示全部楼层 |阅读模式
 楼主| dld2 发表于 2008-6-26 14:49 | 显示全部楼层

一个错误处理宏

#ifndef LWIP_ERROR
#define LWIP_ERROR(m,e,h) do { if (!(e)) { LWIP_PLATFORM_ASSERT(m); h;}} while(0)
#endif /* LWIP_ERROR */

LWIP_PLATFORM_ASSERT这个宏,留给用户自己去实现。

使用的例子:
LWIP_ERROR("netconn_type: invalid conn", (conn != NULL), return NETCONN_INVALID;);
LWIP_ERROR("priv != NULL", (priv != NULL), return;);
 楼主| dld2 发表于 2008-6-26 15:56 | 显示全部楼层

奇怪的语法:(void)x;

首先是一个宏:
#ifndef LWIP_UNUSED_ARG
#define LWIP_UNUSED_ARG(x) (void)x
#endif /* LWIP_UNUSED_ARG */ 

然后,在某函数中,例如:
void abc(int a)

    。。。
    LWIP_UNUSED_ARG(a);
    。。。


为什么出现一个用不到的输入参数俺明白。但是(void)x;这样的语法,还是第一次看到。

查void关键字的用途:
void :声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果。

可能这就属于“显式丢弃运算结果”吧。

测试了一下,无警告,编译通过。





simon21ic 发表于 2008-6-27 14:32 | 显示全部楼层

就是为了防止这里的警告

还有一种方法:a = a;
 楼主| dld2 发表于 2008-6-27 20:14 | 显示全部楼层

谢楼上

redriver 发表于 2008-6-27 21:37 | 显示全部楼层

支持楼主共享LWIP阅读笔记

支持楼主共享LWIP阅读笔记。
开源的协议栈挺多,个人觉得LWIP值得一读。之前曾打算读下OpenTCP,文档较全,但貌似没有OS抽象层。
nin124 发表于 2008-6-28 17:09 | 显示全部楼层

顶!非常好!d1d2继续啊!

顶!非常好!d1d2继续啊!
 楼主| dld2 发表于 2008-6-28 18:57 | 显示全部楼层

多谢楼上鼓励啊

您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

2442

帖子

3

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