c语言是一个“历史悠久”的编写程序专用工具。在嵌入式系统、自动化控制系统软件及电脑最底层电脑操作系统、数据处理方法分布式数据库等系统软件开发中依然是优先的开发环境。有别于许多更“高級”的程序语言,如Java,Python等,c语言是朝向硬件设备特点,根据控制模块的一种程序语言。选用更“高級”言语的编写程序逻辑思维并不可以保持合理的C编程设计。这书是以c语言的特性,合适c语言开发设计的设计方案总体目标的特性来看,论述一类c语言的开发方法,并根据设计方案实际控制模块,先后交流思想。假如你要合理地应用c语言,在控制系统设计中灵便地运用通用化观念,这书是一个很非常好的参照。
目录
- 第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