当前位置: 技术问答>linux和unix
读linux内核list.h遇到的问题
来源: 互联网 发布时间:2016-12-15
本文导语: 除了用LIST_HEAD()宏在声明的时候初始化一个链表以外,Linux还提供了一个INIT_LIST_HEAD宏用于运行时初始化链表: #define INIT_LIST_HEAD(ptr) do { (ptr)->next = (ptr); (ptr)->prev = (ptr); } while (0) 我们用INIT_LIST_HEAD(&nf_sock...
除了用LIST_HEAD()宏在声明的时候初始化一个链表以外,Linux还提供了一个INIT_LIST_HEAD宏用于运行时初始化链表:
#define INIT_LIST_HEAD(ptr) do {
(ptr)->next = (ptr); (ptr)->prev = (ptr);
} while (0)
我们用INIT_LIST_HEAD(&nf_sockopts)来使用它。
只 执行了一条语句,为什么还要循环?
#define INIT_LIST_HEAD(ptr) do {
(ptr)->next = (ptr); (ptr)->prev = (ptr);
} while (0)
我们用INIT_LIST_HEAD(&nf_sockopts)来使用它。
只 执行了一条语句,为什么还要循环?
|
为了让INIT_LIST_HEAD()满足语法规范吧,写成do while循环的话,如果漏了后面的“;”编译器就会报错。