读linux内核list.h遇到的问题
除了用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)来使用它。
只 执行了一条语句,为什么还要循环?
------解决方案--------------------为了让INIT_LIST_HEAD()满足语法规范吧,写成do while循环的话,如果漏了后面的“;”编译器就会报错。