0%
C系统级编程CLASS1
Posted on
Edited on
Symbols count in article:
616
shell
Posted on
Symbols count in article:
268
os_defination_queue_h
Posted on
Edited on
Symbols count in article:
3.6k
OS 宏定义 queue.h
一、基础定义
LIST_HEAD(name, type)
1 | #define LIST_HEAD(name, type) \ |
参数
name - 链表名
type - 链表内储存单元名
作用
用于定义链表类型
LIST_HEAD_INITIALIZER(head) (存疑)
1 | #define LIST_HEAD_INITIALIZER(head) \ |
作用
返回NULL,用于初始化链表头
LIST_ENTRY(type)
1 | #define LIST_ENTRY(type) \ |
参数
type - 链表内储存单元名
作用
链表项,定义在链表储存单元中,用于指向前/后储存单元。实际使用中作为储存单元的一部分出现。
LIST_EMPTY(head)
1 | #define LIST_EMPTY(head) ((head)->lh_first == NULL) |
参数
head - 链表头指针
作用
判断链表是否为空
LIST_FIRST(head)
1 | #define LIST_FIRST(head) ((head)->lh_first) |
参数
head - 链表头指针
作用
返回链表中第一个元素指针
LIST_FOREACH(var, head, field)
1 | #define LIST_FOREACH(var, head, field) \ |
参数
var - 遍历用链表储存单元指针(迭代器)
head - 链表头指针
field - 链表项(数据类型定义为LIST_ENTRY)
作用
遍历链表中所有元素
LIST_INIT(head)
1 | #define LIST_INIT(head) do { \ |
参数
head - 链表头指针
作用
初始化链表头指针指向为空
LIST_INSERT_AFTER(listelm, elm, field)
1 | #define LIST_INSERT_AFTER(listelm, elm, field) do { \ |
参数
listelm - 链表中原有储存单元指针
elm - 新储存单元指针
field - 链表项(数据类型定义为LIST_ENTRY)
作用
将 elm 插到已有元素 listelm 之后。
LIST_INSERT_BEFORE(listelm, elm, field)
1 | #define LIST_INSERT_BEFORE(listelm, elm, field) do { \ |
参数
listelm - 链表中原有储存单元指针
elm - 新储存单元指针
field - 链表项(数据类型定义为LIST_ENTRY)
作用
将 elm 插到已有元素 listelm 之前。
LIST_INSERT_HEAD(head, elm, field)
1 | #define LIST_INSERT_HEAD(head, elm, field) do { \ |
参数
head - 链表头指针
elm - 新储存单元指针
field - 链表项(数据类型定义为LIST_ENTRY)
作用
将elm 插到头部结构体指针head对应链表的头部
LIST_INSERT_TAIL(head, elm, field)
1 | #define LIST_INSERT_TAIL(head, elm, field) do { \ |
参数
head - 链表头指针
elm - 新储存单元指针
field - 链表项(数据类型定义为LIST_ENTRY)
作用
将elm 插到头部结构体指针head对应链表的尾部
LIST_NEXT(elm, field)
1 | #define LIST_NEXT(elm, field) ((elm)->field.le_next) |
参数
elm - 储存单元指针
field - 链表项(数据类型定义为LIST_ENTRY,elm成员变量)
作用
返回指向下一储存单元的指针
LIST_REMOVE(elm, field)
1 | #define LIST_REMOVE(elm, field) do { \ |
参数
elm - 储存单元指针
field - 链表项(数据类型定义为LIST_ENTRY,elm成员变量)
作用
从链表中移除elm
TAILQ_HEAD(name, type)
1 | #define TAILQ_HEAD(name, type) \ |
TAILQ_ENTRY(type)
1 | #define TAILQ_ENTRY(type) \ |
二、理解
- le_prev使用双重指针(?)
- 链表内无malloc/free机制
- 链表头的le_prev指向自身地址
读书笔记:《重构 改善既有代码的设计》
Posted on
Edited on
Symbols count in article:
2.2k
前言
Posted on
Symbols count in article:
863
数学建模常见方法小结
Posted on
Edited on
Symbols count in article:
1.7k
CF#742 div2
Symbols count in article:
8.7k
题目 | A | B | C | D | E | F |
---|---|---|---|---|---|---|
通过情况 | AC | AC | O | O | O | X |
难度 | - | - | - | - | - | - |
层次分析法学习笔记
Symbols count in article:
3k