首页>参考读物>计算机科学与技术>软件与程序设计

C高级编程:基于模块化设计思想的C语言开发
作者 : 吉星 著
丛书名 : C/C++技术丛书
出版日期 : 2016-05-19
ISBN : 978-7-111-53641-3
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 530
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书以C语言开发中会常用到的工具、配套库的开发为依托,从C语言工程实践的角度讲解了这些库的开发方法,充分展现了C语言的模块化设计思想。不仅能让读者掌握模块化的工程开发方法,而且还能收获各种常用工具和库的开发方法和源代码,这是目前所有C语言图书都不具备的。
全书包含如下工具、库和模块:头文件与虚拟模块、测试与日志模块、存储与文件资源管理、集合-数据的基本组织形式、管道或加工模块、工程文件组织管理、结构化数据结构、代码自动生成、参数配置模块、模块的同步、位操作、有限状态机系统的设计等。
每一章都包含如下4个部分:
1.模块化思想:对每个工具、库的模块化思想进行分析
2.实现代码:通过代码示例来分析很阐述
3.工具:具体涉及哪些工具和库
4.C语言知识点:对这些工具和库中涉及的重要C语言知识点进行深入分析和阐述

图书特色

“模块化”是C语言区别于其他编程语言的最重要特性之一,使得它在面向电子、计算和自控系统等领域的工程化项目有得天独厚的优势。虽然“模块化”是C语言固有的语言特性,但是对于那些还没有太丰富经验的C语言工程师来说,还不能很好地利用这一特性带来的便利,因为不仅要求他们对C模块化设计和编程的核心技术、重要模块有深入的理解和掌握,还要求他们掌握模块化的系统设计思想和方法论。
要掌握这些思想和方法论,途径不外乎两种:要么通过自己在大量的工程实践中去摸索和总结,要么去学习他人总结出来的方法和经验。自己总结,时间成本太高,而且难度不可预期;而已有的中文资料中,又鲜有对这方面的系统论述和总结。作为在这个领域有多年工程实践的资深专家,作者亲历和目睹了行业里存在的这个痛点,于是决定结合自己的工程实践经验和成果(代码库),对如何基于模块化设计思想进行C语言工程开发进行了系统地总结和讲解,这在国内应该是开先河之举。

图书前言

为什么要写这本书
因为工作原因,在算法优化、底层驱动、嵌入式系统设计等方面的软件编程时,一直使用C语言,而且很难有其他“更好”的选择。一方面,工作内容在客观上决定了无法利用更高级语言;另一方面,相对其他语言,在上述工作领域中持续使用C语言,使得工作效率更高(结合必要的shell脚本)。因此对于那些初入上述工作领域的工程师,我始终推荐C语言。通过本书,希望将个人的开发总结作为示例,给予新人作为参考。
C语言是一种比较早期的高级语言,其本身是模块化的,这使得通过C语言比较容易实现面向电子、计算、自控系统自身的模块化设计。目前更多的软件设计并非针对电子、计算、自控系统本身,例如,一个企业管理软件、一个网站商城界面等。这些软件设计,是基于应用者的思维,或者说人类正常思维模式而展开的。由此,这类设计使用面向对象语言会非常方便,但却导致过多关注计算机编程的教育,忽视了面向模块化编程方法的讲解。因此,本书将模块化系统设计的个人总结与C语言的讨论融合。希望本书能抛砖引玉,让上述工作领域的读者更好地关注与思考面向系统本身的设计方法。
本书特色
在本书写作的过程中,使用了个人工程代码库中的原型,并尽可能保证这些代码有一定的应用价值。为了在有限的章节尽可能给出一个较为完整的代码集合,因此,章节之间的代码存在一定依赖性,即,前序代码形成的模块,会被后续章节中所讨论的代码利用。
为了让工程经验欠缺的新人对C语言开发有更好的感性认识,本书在讨论问题和介绍代码中穿插了很多个人观点,这些观点并不是理论,也不一定是行业共识,只是从一个侧面的经验之谈,希望对读者有参考价值。
读者对象
电子、自控、计算机等相关专业的高年级本科、研究生
算法设计与优化工程师
嵌入式系统开发工程师
底层、中间件子系统开发工程师
其他对C语言编程、模块化系统设计感兴趣的人员
如何阅读本书
本书共九章,从C语言自身,一直探讨到(进程)模块之间的共享与通信。前八个章节,更多是工程和具体代码设计的讨论,而最后一个章节则是系统分析与系统设计方法的讨论。对于期望、正在从事系统整体规划、构架、设计的读者,建议首先了解最后一章内容,而对于欠缺系统分析经验的新进工程师,则建议从第1章开始阅读,同时建议对书稿中的代码进行上机验证,在执行反馈中了解本书的观点,并进行修正,形成自身工程代码库。
勘误和支持
由于水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正,期待能够得到你们的真挚反馈,在技术之路上互勉共进,我的邮箱是zsu_lucky@163.com。
致谢
感谢教育、指导、帮助、支持过我的老师、朋友及家人,使得我能持续多年在所喜爱的技术领域进行工作。
感谢机械工业出版社华章分社的杨福川和高婧雅,始终支持我的写作,是你们的鼓励和帮助引导我顺利完成这本书稿。
最后,特别感谢杨尚丽对本书的文句审核以及赵瑞源对本书代码的验证。

吉星
2016年3月

上架指导

计算机\程序设计

封底文字

“模块化”是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

教学资源推荐
作者: 施霞萍 王瑾德 史建成 马可幸 编著
作者: [英]理查德·伯德(Richard Bird) 著
作者: 马玉春 李壮 张鲲 黄应红 编著
参考读物推荐
作者: 张光华 贾庸 李岩 著
作者: 杜江 著
作者: 校宝在线 肖伟宇 翁琳鼎 王斌 厉红兵 编著