找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2769|回复: 0
打印 上一主题 下一主题
收起左侧

编写优质嵌入式C程序-裸机环境(76页word文档)极力推荐

[复制链接]
跳转到指定楼层
楼主
前言:这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序。感觉是有一定的参考价值,所以拿出来分享,抛砖引玉。

摘要:本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理;分析了编译器语义检查的不足之处并给出防范措施,以Keil MDK编译器为例,介绍了该编译器的特性、对未定义行为的处理以及一些高级应用;在此基础上,介绍了防御性编程的概念,提出了编程过程中就应该防范于未然的多种措施;提出了测试对编写优质嵌入式程序的重要作用以及常用测试方法;最后,本文试图以更高的层次看待编程,讨论一些通用的编程思想。
1.    简介
2.    C语言特性
1.    1处处都是陷阱
1.    11 无心之过
2.    12 数组下标
3.    13 容易被忽略的break关键字
4.    14 意想不到的八进制
5.    15指针加减运算
6.    16关键字sizeof
7.    17增量运算符和减量运算符
8.    18逻辑与和逻辑或的陷阱
9.    19结构体的填充
2.    2不可轻视的优先级
3.    3隐式转换
3.    编译器
1.    1不能简单的认为是个工具
2.    2不能依赖编译器的语义检查
1.    21莫名的死机
2.    22不起眼的改变
3.    23 难查的数组越界
4.    24神奇的volatile
5.    25局部变量
6.    26使用外部工具
3.    3你觉得有意义的代码未必正确
1.    31常见的未定义行为
2.    32如何避免C语言未定义行为
4.    4 了解你的编译器
1.    41编译器的一些小知识
2.    42初始化的全局变量和静态变量的初始值被放到了哪里
3.    43在C代码中使用的变量编译器将他们分配到RAM的哪里
4.    44默认情况下栈被分配到RAM的哪个地方
5.    45 有多少RAM会被初始化
6.    46 MDK编译器如何设置非零初始化变量
4.    防御性编程
1.    1具有形参的函数需判断传递来的实参是否合法
2.    2仔细检查函数的返回值
3.    3 防止指针越界
4.    4 防止数组越界
5.    5 数学算数运算
1.    51除法运算只检测除数为零就可靠吗
2.    52检测运算溢出
3.    53检测移位
6.    6如果有硬件看门狗则使用它
7.    7关键数据储存多个备份取数据采用表决法
8.    8对非易失性存储器进行备份存储
9.    9软件锁
10.    10通信
11.    11开关量输入的检测确认
12.    12开关量输出
13.    13初始化信息的保存和恢复
14.    14陷阱
15.    15阻塞处理
5.    测试再测试
1.    1使用硬件调试器测试
2.    2有些缺陷很难缠
1.    21简单易用的调试函数
2.    22对调试函数进一步封装
6.    编程思想
1.    1编程风格
1.    11 整洁的样式
2.    12清晰的命名
3.    13恰当的注释
2.    2数据结构
7.    总结和阅读书目
1.    1关于语言特性
2.    2关于编译器
3.    3关于防御性编程
4.    4关于编程思想


完整的word格式文档51黑下载地址:
编写优质嵌入式C程序.docx (339.55 KB, 下载次数: 78)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表