您的位置:首页 > 运维架构 > Linux

Linux源码中链表的声明和初始化

2015-10-08 16:26 176 查看
(1)使用LIST_HEAD宏在编译时静态初始化

/*list_head数据结构体成员next和pre初始化×/

#define LIST_HEAD_INIT(name) { &(name),&(name) }

#define LIST_HAED(name) struct list_head name = LIST_HEAD_INIT(name)

/*等价于define LIST_HAED(name) struct list_head name = { &(name),&(name) }*/

LIST_HEAD(mylist); 展开宏:struct list_head mylist = { &(mylist).&(mylist) };

LIST_HEAD(mylist); 编译阶段就定义一个变量并初始化(编译时静态初始化),但作用等同于以下更常用的运行时初始化的写法:

struct list_head mylist;

INIT_LIST_HEAD(&mylist);

(2)使用INIT_LIST_HEAD()在运行时进行初始化

static inline void INIT_LIST_HEAD(struct list_head *list)

{

list->next = list;

list->next = list;

}

struct list_head list;

INIT_LIST_HEAD(&list);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: