打印

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

[复制链接]
4512|7
手机看帖
扫描二维码
随时随地手机跟帖
沙发
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;

使用特权

评论回复
5
dld2|  楼主 | 2008-6-27 20:14 | 只看该作者

谢楼上

使用特权

评论回复
6
redriver| | 2008-6-27 21:37 | 只看该作者

支持楼主共享LWIP阅读笔记

支持楼主共享LWIP阅读笔记。
开源的协议栈挺多,个人觉得LWIP值得一读。之前曾打算读下OpenTCP,文档较全,但貌似没有OS抽象层。

使用特权

评论回复
7
nin124| | 2008-6-28 17:09 | 只看该作者

顶!非常好!d1d2继续啊!

顶!非常好!d1d2继续啊!

使用特权

评论回复
8
dld2|  楼主 | 2008-6-28 18:57 | 只看该作者

多谢楼上鼓励啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

2442

帖子

3

粉丝