嵌入式C关键特性 |
嵌入式C编程基础 |
- 变量与内存分配机制
- 函数与调用原理
- 条件控制语句
- 常量和变量
- 指针和函数指针
- 设计中断函数
- 关键字static,extern,volatile,inline
- 位操作的应用
- 结构体中的位域
|
嵌入式C编码风格 |
- 变量、函数、宏的命名
- 代码排版与布局
- 注释的策略
- indent工具
- 为代码编写文档
|
嵌入式C性能优化 |
- 使用宏和inline
- 使用寄存器变量
- 内嵌汇编
- 利用硬件特性
- 循环展开
- 使用查找表
- 紧凑的C代码并不能保证得到高效的机器代码
- 编译优化
|
嵌入式C软件结构 |
嵌入式C软件模块与模块划分 |
- 模块划分原则
- 源代码文件和目录的组织
- 硬件驱动模块
- 软件功能模块
- 提供API
- 头文件
- 全局变量
- 主循环与中断
- 软件的分层结构
|
嵌入式C函数 |
- 一个函数只做一件事,不要编写多种功能集于一身的函数
- 明确地定义函数的参数
- 避免比尔类型参数
- 编写函数使其在给定有效的输入情况下不会失败
- 函数不依赖于另一个函数的内部细节
- 函数要小且容易测试
- 函数内部代码块
|
嵌入式C的面向对象 |
- 用struct来模拟class
- 封装
- 继承
- 重载
- 数据结构的抽象
|
代码质量 |
嵌入式C防御性编程 |
- 防御性代码的风格
- 编译警告开关的使用
- 预计所有可能的异常
- 检查所有的返回值
- 审慎处理内存资源
- 变量声明策略
- 审慎地进行强制转换
- 尽量用可移植的数据类型
- 使用lint来查出编译程序漏掉的错误
- 使用断言
|
嵌入式C白盒测试 |
- TDD与单元测试
- 单元测试与Debug
- 单元测试用例设计
- 即使测试代码会影响进度,也要坚持测试代码
- 测试代码的责任不在测试员身上,而是程序员自己的责任
|
嵌入式C代码评审 |
- 代码评审的规范
- 代码评审的组织方式
- 代码评审的内容
- 结合配置管理强制代码评审
|
嵌入式C代码重构 |
- 代码重构的原则
- 重新命名函数
- 提炼函数
- 提炼判断条件
- 简化函数参数
- 解除全局变量的噩梦
- 避免函数传递中的隐形bug
- 调整函数位置
|