欢迎来到天天文库
浏览记录
ID:29727807
大小:141.00 KB
页数:17页
时间:2018-12-22
《编写高质量的单片机c程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、§5编写高质量的单片机C程序收集于网络高质量的单片机C程序代码运行效率高、可读性和可维护性强。在编写小型的单片机程序时,代码质量的重要性可能不是很明显。但如果要编写较大规模的程序,特别是多人合作编写程序时,这一点就变得十分重要了。本章内容以林锐的《高质量C++/C编程指南》为蓝本,针对单片机编程的实际各部进行了大量删节和改写。5.1文件结构每个单片机C程序通常分为两种文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(d
2、efinition)文件。程序的头文件以“.h”为后缀,定义文件以“.c”为后缀。5.1.1版权和版本的声明版权和版本的声明位于头文件和定义文件的开头(参见示例5.1),主要内容有:(1)版权信息。(2)文件名称,标识符,摘要。(3)当前版本号,作者/修改者,完成日期。(4)版本历史信息。/**Copyright(c)2001,上海贝尔有限公司网络应用事业部*Allrightsreserved.**文件名称:filename.h*文件标识:见配置管理计划书*摘要:简要描述本文件的内容**当前版本:1.1*作者:
3、输入作者(或修改者)名字*完成日期:2001年7月20日**取代版本:1.0*原作者:输入原作者(或修改者)名字*完成日期:2001年5月10日*/示例5.1版权和版本的声明5.1.2头文件的结构头文件由三部分内容组成:(1)头文件开头处的版权和版本声明(参见示例5.1)。(2)预处理块。(3)函数声明等。假设头文件名称为graphics.h,头文件的结构参见示例5.2。【规则5-1-2-1】为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。【规则5-1-2-2】用#inc
4、lude格式来引用标准库的头文件(编译器将从标准中国科学技术大学业余无线电协会6451单片机C语言编程入门——Easy51KitPro配套学习资料库目录开始搜索)。【规则5-1-2-3】用#include“filename.h”格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。〖建议5-1-2-1〗头文件中只存放“声明”而不存放“定义”。〖建议5-1-2-2〗不提倡使用全局变量,尽量少在头文件中出现象externintvalue这类声明。但是,全局变量是中断处理函数与外界程
5、序进行数据交换的唯一途径,因此,几乎每一个单片机程序都会定义全局变量。在单片机C程序中,全局变量使用的频率要比普通的C程序高,但仍应遵守能不用全局变量的地方就不用全局变量的原则。//版权和版本声明见示例1-1,此处省略。#ifndefGRAPHICS_H//防止graphics.h被重复引用#defineGRAPHICS_H#include//引用标准库的头文件#include“myheader.h”//引用非标准库的头文件voidFunction1(…);//全局函数声明#endif示例5.2
6、C头文件的结构5.1.3定义文件的结构定义文件有三部分内容:(1)定义文件开头处的版权和版本声明(参见示例5.1)。(2)对一些头文件的引用。(3)程序的实现体(包括数据和代码)。假设定义文件的名称为graphics.c,定义文件的结构参见示例5.3。//版权和版本声明见示例5.1,此处省略。#include“graphics.h”//引用头文件…//全局函数的实现体voidFunction1(…){…}示例5.3C定义文件的结构5.1.4目录结构如果一个程序的头文件数目比较多(如超过十个),通常应将头文件和定
7、义文件分别保存于不同的目录,以便于维护。例如可以将头文件保存于include目录,将定义文件保存于source目录(可以是多级目录)。中国科学技术大学业余无线电协会6551单片机C语言编程入门——Easy51KitPro配套学习资料5.2程序的版式版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要构成因素。程序的版式好比为“书法”。好的“书法”可让人对程序一目了然,看得兴致勃勃。差的程序“书法”如螃蟹爬行,让人看得索然无味,更令维护者烦恼有加。5.2.1空行空行起着分隔程序段
8、落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。空行不会浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。所以不要舍不得用空行。【规则5-2-1-1】在每个函数定义结束之后都要加空行。参见示例5.4(a)。【规则5-2-1-2】在一个函数体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行分隔。参见示例5.4(b)。//空行//空行voidFunction1
此文档下载收益归作者所有