LIST_HEAD 的用法

首先来点声明:

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);



呵呵

猜你喜欢

转载自blog.csdn.net/qianniu2meiyi/article/details/38061433
今日推荐