5. 数据结构—结构(struct)
声明
一、概述 Libuv 和其他 C 项目一样,大量使用结构,本文主要关注结构的声明方式、结构的” 继承” 和结构的分类。
一、概述
Libuv 和其他 C 项目一样,大量使用结构,本文主要关注结构的声明方式、结构的” 继承” 和结构的分类。 如果在分析具体的结构时遇到宏,可以先预处理展开宏,如:
gcc -E src/uv-common.c -o src/uv-common.i -Iinclude -Isrc -Isrc/unix
二、结构的分类
从功能上看,Libuv 的结构主要分为这几类:
Loop :事件循环 (event loop)。本质上是个特殊的 Handle 。
Handles : 句柄。表示在其被激活时可以执行某些操作且持久存在的对象。
Requests : 请求。(通常) 表示一个短暂存在的操作。
Other : 如: uv_buf_s、 uv_stat_s 、uv_cpu_info_s、uv_interface_address_s、uv_dirent_s、uv_passwd_s 等出于数据封装和跨平台的目的而定义的结构。
三、Handles 和 Requests 的结构 “继承”
主要是结构字段的 “继承”,父结构(“类”) 定义基本字段,子结构在父结构尾部添加字段。在声明结构的过程中使用宏。以 uv_handle_s