您好,欢迎来到聚文网。 登录 免费注册
C高级编程:基于模块化设计思想的C语言开发

C高级编程:基于模块化设计思想的C语言开发

  • 装帧: 平装
  • 出版社: 机械工业出版社
  • 作者: 吉星 著
  • 出版日期: 2016-05-01
  • 商品条码: 9787111536413
  • 版次: 1
  • 开本: 16开
  • 页数: 522
  • 出版年份: 2016
定价:¥99 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
内容简介
C语言是一个“古老”的编程工具。在嵌入式系统、自控系统及计算机底层操作系统、数据处理中间件等系统开发中仍然是优先选择的开发工具。不同于很多更“不错”的编程语言,如Java,Python等,C语言是面向硬件特性,基于模块的一种编程语言。采用更“不错”语言的编程思维并不能实现有效的C程序设计。本书是从C语言的特点,适合C语言开发的设计目标的特点出发,阐述一类C语言的开发方式,并通过设计具体模块,依次展开讨论。如果你想有效地使用C语言,在系统设计中灵活地应用模块化设计思想,本书是一个很不错的参考。
作者简介
吉星,在嵌入式系统设计、算法设计、系统优化、算法优化等方面有多年项目经验;利用C语言结合相关汇编,在AVR、STM32等系列MCU以及X86、ARM、DSP等架构的多款SoC上有10多年的工程经验:对计算机组成原理,操作系统原理,数据库系统原理的工程化有较深的理解;在模式识别、视频编解码、系统内部协议等算法方面,有自主设计及优化的工程经验。多年跟踪及研究机器人相关技术,现领导团队,针对智能轮式机器人,进行研究、开发及应用设计。
目录
前  言 第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
摘要
Preface?前    言为什么要写这本书因为工作原因,在算法优化、底层驱动、嵌入式系统设计等方面的软件编程时,一直使用C语言,而且很难有其他“更好”的选择。一方面,工作内容在客观上决定了无法利用更高级语言;另一方面,相对其他语言,在上述工作领域中持续使用C语言,使得工作效率更高(结合必要的shell脚本)。因此对于那些初入上述工作领域的工程师,我始终推荐C语言。通过本书,希望将个人的开发总结作为示例,给予新人作为参考。
    C语言是一种比较早期的高级语言,其本身是模块化的,这使得通过C语言比较容易实现面向电子、计算、自控系统自身的模块化设计。目前更多的软件设计并非针对电子、计算、自控系统本身,例如,一个企业管理软件、一个网站商城界面等。这些软件设计,是基于应用者的思维,或者说人类正常思维模式而展开的。由此,这类设计使用面向对象语言会非常方便,但却导致过多关注计算机编程的教育,忽视了面向模块化编程方法的讲解。因此,本书将模块化系统设计的个人总结与C语言的讨论融合。希望本书能抛砖引玉,让上述工作领域的读者更好地关注与思考面向系统本身的设计方法。
    本书特色在本书写作的过程中,使用了个人工程代码库中的原型,并尽可能保证这些代码有一定的应用价值。为了在有限的章节尽可能给出一个较为完整的代码集合,因此,章节之间的代码存在一定依赖性,即,前序代码形成的模块,会被后续章节中所讨论的代码利用。
    为了让工程经验欠缺的新人对C语言开发有更好的感性认识,本书在讨论问题和介绍代码中穿插了很多个人观点,这些观点并不是理论,也不一定是行业共识,只是从一个侧面的经验之谈,希望对读者有参考价值。
    读者对象电子、自控、计算机等相关专业的高年级本科、研究生算法设计与优化工程师嵌入式系统开发工程师底层、中间件子系统开发工程师其他对C语言编程、模块化系统设计感兴趣的人员如何阅读本书本书共九章,从C语言自身,一直探讨到(进程)模块之间的共享与通信。前八个章节,更多是工程和具体代码设计的讨论,而最后一个章节则是系统分析与系统设计方法的讨论。对于期望、正在从事系统整体规划、构架、设计的读者,建议首先了解最后一章内容,而对于欠缺系统分析经验的新进工程师,则建议从第1章开始阅读,同时建议对书稿中的代码进行上机验证,在执行反馈中了解本书的观点,并进行修正,形成自身工程代码库。
    勘误和支持由于水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正,期待能够得到你们的真挚反馈,在技术之路上互勉共进,我的邮箱是zsu_lucky@163.com。
    致谢感谢教育、指导、帮助、支持过我的老师、朋友及家人,使得我能持续多年在所喜爱的技术领域进行工作。
    感谢机械工业出版社华章公司的杨福川和高婧雅,始终支持我的写作,是你们的鼓励和帮助引导我顺利完成这本书稿。
    最后,特别感谢杨尚丽对本书的文句审核以及赵瑞源对本书代码的验证。
    吉星2016年3月

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网