第1章 C语言的探讨 1
1.1 C的编译链接与文件引用 3
1.1.1 一个小程序 3
1.1.2 链接与文件引用 5
1.2 函数、数据与作用域 8
1.2.1 全局函数与局部函数 8
1.2.2 数据与数据的类别 9
1.2.3 数据存储空间 11
1.3 类型与操作 17
1.3.1 基础类型及其操作和重定义 17
1.3.2 结构体类型 20
1.3.3 指针常量、指针与连续空间 21
1.3.4 函数接口类型、可变参类型和执行跳转 26
1.4 预处理操作 31
1.4.1 C语言的词法与预处理 31
1.4.2 宏判断的应用 37
1.4.3 宏定义与模板函数 40
1.4.4 预处理的杂项 43
1.4.5 宏与代码的自动化构建 47
1.5 小模块与函数内的模块化 52
1.5.1 参数判断小模块 52
1.5.2 goto与函数内的模块化 54
1.6 结束语 63
第2章 标准库、自有基础库与delog模块 64
2.1 标准库 65
2.1.1 assert.h、errno.h 66
2.1.2 setjmp.h跨函数的跳转 67
2.1.3 stdarg.h 69
2.1.4 stdio.h 74
2.1.5 stdlib.h 82
2.1.6 string.h 86
2.1.7 time.h 90
2.2 构建自有基础库 91
2.2.1 基础操作 93
2.2.2 char的表 99
2.2.3 UTF-8的基础表 106
2.2.4 慢一点的字符串操作 112
2.3 delog模块 118
2.3.1 实体模块 118
2.3.2 delog模块利用的系统库函数 119
2.4 结束语 133
第3章 make、工具与文档组织 134
3.1 依赖与make 135
3.2 自有工具库 146
3.2.1 lex/flex的入门应用 147
3.2.2 参数配置的子模块 153
3.2.3 自己构造自己的小工具 175
3.3 工程文档的组织 190
3.3.1 makefile的补充设计 190
3.3.2 模块目录与工具 193
3.3.3 整体的工程目录 203
3.4 结束语 211
第4章 抽象逻辑与虚拟模块、索引模块 213
4.1 抽象与宏 214
4.1.1 抽象的描述 214
4.1.2 抽象的对象与操作 217
4.1.3 抽象的函数 221
4.2 虚拟模块 228
4.2.1 抽象类型的定义 228
4.2.2 抽象操作和模板函数的组织方式 232
4.2.3 模板函数的引用 234
4.3 索引模块 241
4.3.1 索引链及其基础操作 243
4.3.2 索引模块的构建 246
4.3.3 索引节点的存储单元 249
4.4 结束语 252
第5章 空间资源的组织 253
5.1 资源的申请与利用 254
5.1.1 动态空间的获取 254
5.1.2 基于POSIX的共享空间 259
5.1.3 基于POSIX的信号量 263
5.2 连续空间的组织 268
5.2.1 连续空间的组织信息 270
5.2.2 通用数据空间类型_BUF与_P 272
5.3 两个空间管理模块 278
5.3.1 jx_buf模块 278
5.3.2 jx_sharebuf的子模块 301
5.3.3 jx_sharebuf共享空间管理模块 309
5.4 结束语 320
第6章 数据的集合化组织 321
6.1 集合化空间的组织 323
6.1.1 集合的元素节点 324
6.1.2 集合的组织 325
6.1.3 节点空间的组织 329
6.2 虚拟模块jx_sets 331
6.2.1 jx_SetsType.h和jx_SetsDef.h 332
6.2.2 模板函数头文件jx_SetsTemp.h 334
6.2.3 模板化虚拟模块的实例 354
6.3 集合化空间的扩展 359
6.3.1 散列集合化空间的组织方式 359
6.3.2 散列集合化空间的操作 363
6.3.3 散列集合化空间的测试 370
6.4 结束语 373
第7章 复杂的数据集合化 375
7.1 树集合化空间 376
7.1.1 树的结构与基础操作 377
7.1.2 树集合化空间管理模块 382
7.1.3 相对复杂的树操作 392
7.2 有向关系集合化空间 399
7.2.1 有向关系结构与基础操作 400
7.2.2 关系集合化空间的基础操作 404
7.3 有向图的集合化空间 416
7.3.1 模块的类型和定义 418
7.3.2 模板函数 424
7.3.3 可配置的遍历与搜索 432
7.4 结束语 441
第8章 进程与通信 442
8.1 多进程的创建 443
8.1.1 使用fork创建进程 444
8.1.2 创建新会话 447
8.1.3 调整文件的关联 449
8.2 socket方式的进程间通信 452
8.2.1 socket通信 452
8.2.2 jx_socket模块 456
8.2.3 会话与测试 469
8.3 基于共享空间的进程间通信 472
8.3.1 基于共享空间的队列模式 473
8.3.2 基于共享空间的多端口模式 481
8.3.3 多端口模式的应用场景 492
8.4 结束语 496
第9章 模块化的系统设计 497
9.1 系统与模块 498
9.1.1 什么是系统 498
9.1.2 什么是模块 500
9.1.3 模块化与关联 503
9.2 模块化的分析与设计方法 506
9.2.1 角色与任务 506
9.2.2 框架与层次 509
9.2.3 协同对接与系统整合 511
9.3 C语言与模块化 512
9.3.1 进程与模块 513
9.3.2 模块封装与接口协议 516
9.3.3 各种模块与抽象、复用 519
9.4 结束语 521