首先来点声明:
struct list_head {
struct list_head *next, *prev;
};
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)</span>
对于调用 LIST_HEAD之前比较不太理解, C语言的功底啊,差劲啊~~~
其实程序进行一下替换就明白了
首先 替换一下
#define LIST_HEAD(name) \
struct list_head name = { &(name), &(name) }</span>
然后再根据
struct list_head {
struct list_head *next, *prev;
};
的定义
得到name是个结构体, 上面的程序是对结构体进行初始化等价于
name->next = &(name);
name->prev = &(name);