第1章 概要 1
1.1 现在C依然很热门 1
1.2 使用C进行嵌入式开发的特点 3
1.3 本书的目标 5
1.3.1 C与集成开发环境 5
1.3.2 C与设计模式 6
1.3.3 C与极限编程 7
1.3.4 C与现代开发方式 9
1.4 总结 11
第2章 搭建开发环境 13
2.1 概要 13
2.2 获取Linux 13
2.3 在Windows PC上搭建环境 14
2.4 安装Linux 20
2.4.1 准备工作 20
2.4.2 制作安装介质 21
2.4.3 安装Xubuntu 24
2.5 安装Eclipse 29
2.5.1 安装Java 29
2.5.2 安装Eclipse 30
2.5.3 安装其他工具 33
2.6 Eclipse的基本操作 34
2.6.1 Hello, World 34
2.6.2 视图 38
2.6.3 工程、工作区和透视图 38
2.7 Eclipse的功能 41
2.7.1 可视化调试 41
2.7.2 导航器 48
2.7.3 代码补全 51
2.7.4 宏展开 53
2.7.5 本地代码历史 54
2.7.6 TODO注释 55
2.7.7 与外部编辑器协作 56
2.8 总结 58
第3章 C语言与面向对象 59
3.1 概要 59
3.2 C的模块化与面向对象 59
3.2.1 C与模块化 60
3.2.2 使用结构体将数据结构与代码块分离 62
3.2.3 使用C进行面向对象编程 66
3.2.4 面向对象与多态性 75
3.2.5 继承 76
3.2.6 封装 79
3.2.7 虚函数表 80
3.2.8 非虚函数 82
3.3 总结 84
第4章 C语言与设计模式 85
4.1 状态模式 85
4.1.1 状态迁移图 85
4.1.2 状态迁移表 89
4.1.3 面向对象的状态模式 90
4.1.4 多个状态集合相互关联的情况 93
4.1.5 状态模式与内存管理 94
4.2 模板方法模式 95
4.2.1 返回非int值 99
4.2.2 处理其他资源 100
4.2.3 上下文 107
4.3 观察者模式 114
4.4 职责链模式 125
4.5 访问者模式 128
4.6 总结 134
第5章 C语言与重构 135
5.1 概要 135
5.2 测试驱动开发 136
5.3 TDD入门 137
5.3.1 设置Eclipse 137
5.3.2 初次测试驱动开发 142
5.3.3 测试静态函数 147
5.4 重构 150
5.4.1 对外接口 150
5.4.2 重构与投资 150
5.5 TDD实践篇 151
5.5.1 怪兽方法 152
5.5.2 C语言的Mock测试 162
5.5.3 完成重构 182
5.5.4 获取代码覆盖率 186
5.6 总结 188
第6章 持续集成与部署 191
6.1 概要 191
6.2 持续集成的前提 192
6.2.1 软件配置管理工具 192
6.2.2 构建工具 192
6.2.3 Bug跟踪系统(BTS) 193
6.3 引入CI服务器 193
6.4 CI入门 196
6.4.1 本次CI的自动化目标 196
6.4.2 Scons构建脚本 197
6.4.3 gcovr的安装 199
6.4.4 构建 200
6.4.5 提交至SCM 202
6.4.6 创建Jenkins任务 203
6.5 内存Bug大作战 214
6.5.1 安装 214
6.5.2 运行Valgrind 214
6.5.3 Valgrind可以检测出的错误 215
6.5.4 Valgrind中检测出的内存错误的特点与对策 220
6.5.5 在Jenkins中使用Valgrind 221
6.6 CI实践篇 228
6.6.1 Microchip工具 229
6.6.2 构建内容 230
6.6.3 分割构建文件 234
6.6.4 独立构建服务器 240
6.6.5 设置自动构建计划 247
6.7 总结 249
附录A 示例代码 251
A.1 注意事项 251
A.2 添加C99标准 251
A.3 在Eclipse中导入示例代码 252
A.3.1 解压示例代码压缩文件 252
A.3.2 Eclipse中新建空白工程 252
展开