《C高级编程 基于模块化设计思想的C语言开发》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:吉星著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2016
  • ISBN:9787111536413
  • 页数:522 页
图书介绍: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