testdisk 是一款开源数据恢复软件
testdisk概述
大部分代码是c语言编写, 很少部分是c++
使用交叉编译器gcc、#ifdefine 、分别编写linux 、windows、mac下的磁盘访问函数, 实现 编译成 linux , windows , mac 下的可执行文件.
c语言没有链表库, 作者用了个巧 实现了通用链表,大致如下
链表串结构体 以 遍历 结构体
链表串结构体 以 遍历 结构体 , 被遍历的结构体是任意的. 可以算是次通用链表.
/**
*
struct td_list_head list; // 自定义链表节点: 横向串起各种它所在的结构体, 形成链表结构
td_list_entry //该宏作用是 从 自定义链表节点 找到其所在结构体指针
td_list_for_each // 该宏作用是 沿着 自定义链表节点 遍历该链表
链表串结构体 以 遍历 结构体 分析:
1.整体描述
假设链表是横向的, 每个链表节点又是一个纵向结构体的成员, 目标是要遍历每个结构体.
沿着自定义链表节点 遍历链表, 当在任意一个链表节点上 能 纵向的 找到 包含该链表节点 的 结构体 , 这样就实现了 对这些结构体列表进行遍历.
说明:
链表节点定义:struct td_list_head list. 命名为 链表节点
遍历:td_list_for_each. 命名为 遍历宏
从 横向的链表节点 推

发布评论