- 0
- 0
- 约6.98万字
- 约 73页
- 2026-01-29 发布于河北
- 举报
C语言:如何用更高层次编写嵌入式C代码
1.简介
市面上介绍c语言以及编程方法的书目繁多,但对如何编写优质嵌入式
C程序却鲜有介绍,特别是对应用于单片机、ARM7、Corlex-M3这类微
控制器上的优质C程序编写方法几乎是个空白。本文面向的,正是使用亘
片机、ARM7、Conex-M3这类微控制器的底层编程人员。
编写优质嵌入式C程序绝非易事,它跟设计者的思维和经验积累关系密
切。嵌入式C程序员不仅需要熟知硬件的特性、硬件的缺陷等,更要深入
一门语言编程,不浮于表面。为了更方便的操作硬件,还需要对编译器进
行深入的了解。
本文将从语言特性、编译器、防御性编程、测试和编程思想这几个方面来
讨论如何编写优质嵌入式C程序。与很多杂志、书籍不同,本文提供大员
真实实例、代码段和参考书目,不仅介绍应该做什么,还重点介绍如何
做、以及为什么这样做。编写优质嵌入式C程序涉及面十分广,需要程序
员长时间的经验积累,本文希望能缩短这一过程。
2.C语言特性
语言是编程的基石,C语言诡异且有种种陷阱和缺陷,需要程序员多年历
练才能达到较为完善的地步。虽然有众多书籍、杂志、专题讨论过C语言
的陷阱和缺陷,但这并不影响本节再次讨论它,总是有大批的初学者,前
仆后继的倒在这些陷阱和缺陷上,民用设备、工业设备甚至是航天设备都
不例外。本节将结合具体例子再次审视它们,希望引起足够重视。深入理
解C语言特性,是编写优质嵌入式C程序的基础。
2.1处处都是陷阱
2.1.1无心之过
1)“=和”==,,
将比较运算符==误写成赋值运算符=,可能是绝大多人都遇到过
的,比如下面代码:
1.if(x=5)
2.(
3.//其它代码
4.}
代码的本意是比较变量x是否等于常量5,但是误将“==写成了“=,if语
句恒为真。如果在逻辑判断表达式中出现赋值运算符,现在的多数编送
器会给出警告信息。比如keilMDK会给出警告提示:“warning:#187-D:
useofwhere,,==mayhaebeenintended”,但并非所有程序员都会注
意到这类警告,因此有经验的程序员使用下面的代码来避免此类错误:
1.if(5==x)
2.(
3.//其它代码
4.)
将常量放在变量x的左边,即使程序员误将―写成了』L编译器会产生
一个任谁也不能无视的语法错误信息:不可给常量赋值!
2)复合赋值运算符
复合赋值运算符(+=、*=等等)虽然可以使表达式更加简洁并有可能产生
更高效的机器代码,但某些复合赋值运算符也会给程序带来隐含Bug,比
如“+=容易误写成“=+”,代码如下:
1.tmp=+l;
代码本意是想表达tmp=tmp+l,但是将复合赋值运算符“+=误写成“=+”:
将正整数常量1赋值给变量imp。编译器会欣然接受这类代码,连警告都
不会产生。
如果你能在调试阶段就发现这个Bug,真应该庆祝一下,否则这很可能会
成为一个重隐含Bug,且不易被察觉。
复合赋值运算符也有类似问题存在。
3)其它容易误写
•使用了中文标点
•头文件声明语句最后忘记结束分号
•逻辑与和位与、逻辑或||和位或|、逻辑非!和位取反〜
•字母I和数字1、字母0和数字0
这些误写其实容易被编译器检测出,只需要关注编译器对此的提示信息,
就能很快解决。
很多的软件Bug源自于输入错误。在Google上搜索的时候,有些结果列
表项中带有一条警告,表明Google认为它带有恶意代码。如果你在2009
年1月31日一早使用Google搜索的话,你就会看到,在那天早晨55
分钟的时间内,Google的搜索结果标明每个站点对你的PC都是有害的。
这涉及到整个In
您可能关注的文档
- 国企个人工作总结 (一).pdf
- AVTRONSYS智能家居方案.pdf
- 国语建立之后现代文写作用典状况.pdf
- 海洋调查设备相关行业投资方案范本.pdf
- BEC商务英语(中级)口语模拟试卷13(共21题).pdf
- 海洋资料浮标相关行业投资方案范本.pdf
- 氦气相关项目投资计划书范本.pdf
- BEC商务英语(中级)口语模拟试卷17(共22题).pdf
- 寒假的社会实践总结范文.pdf
- 焊工中级(焊接设备及工具)模拟试卷1.pdf
- 2026山东临沂河东区部分事业单位招聘综合类岗位7人参考考试题库含答案解析.docx
- 2026湖南长沙市天心区面向全国引进选拔生31人备考考试试题含答案解析.docx
- 2026年上半年云南工业技师学院招聘人员(30人)参考考试题库含答案解析.docx
- 2025广东佛山市顺德区沙滘初级中学第二学期临聘教师招聘备考考试题库含答案解析.docx
- 2026宁夏银川市中医医院招聘事业单位编制人员10名备考考试题库含答案解析.docx
- 2026山东事业单位统考青岛李沧区招聘32人备考考试试题含答案解析.docx
- 2026云南东骏药业集团招聘备考考试题库含答案解析.docx
- 2024年住院医师规范化培训《中医康复科》试题库.docx
- 2026年上半年黑龙江工程学院事业单位公开招聘工作人员14人备考考试题库含答案解析.docx
- 2026上半年云南事业单位联考残疾人联合会直属事业单位公开招聘人员备考考试试题含答案解析.docx
最近下载
- 2025届高三一轮复习课件+第57讲长江流域.pptx VIP
- 诚信体系企业需要具备的资料清单.doc VIP
- 3.3 长江流域协作开发 第一课时教学设计.docx VIP
- 高中地理湘教版:33学习任务单‖43-3长江流域协作开发与环境保护第三课时.docx VIP
- 高中地理湘教版:43课后练习‖43-3长江流域协作开发与环境保护第三课时.docx VIP
- 高中地理课件湘教版:1-2-2区域发展的差异性.pptx
- 2025NCCN临床实践指南之胸腺瘤和胸腺癌(2026.v1).pptx VIP
- 2025年新人教版七年级下册地理全册知识点梳理(新教材).pdf
- 电梯安全评估机构与业主合作服务协议.docx VIP
- 25-400T型通用说明书(13版).(200吨冲床说明书)试卷.doc
原创力文档

文档评论(0)