单片机C语言编程规范V.pdf

上传人:b****1 文档编号:3211559 上传时间:2022-11-20 格式:PDF 页数:90 大小:404.59KB
下载 相关 举报
单片机C语言编程规范V.pdf_第1页
第1页 / 共90页
单片机C语言编程规范V.pdf_第2页
第2页 / 共90页
单片机C语言编程规范V.pdf_第3页
第3页 / 共90页
单片机C语言编程规范V.pdf_第4页
第4页 / 共90页
单片机C语言编程规范V.pdf_第5页
第5页 / 共90页
点击查看更多>>
下载资源
资源描述

单片机C语言编程规范V.pdf

《单片机C语言编程规范V.pdf》由会员分享,可在线阅读,更多相关《单片机C语言编程规范V.pdf(90页珍藏版)》请在冰豆网上搜索。

单片机C语言编程规范V.pdf

北京人民电器厂有限公司软件编码规范C语言编程规范(CLanguageCodingRules)语言编程规范(CLanguageCodingRules)(内部使用内部使用)编制编制蓝利民蓝利民李明波李明波日期日期2008.10.21审核审核日期日期批准批准日期日期北京人民电器厂有限公司软件编码规范I前言前言为何需要编程规范为何需要编程规范之所以编程规范与惯例对于程序员来说重要,有以下几点原因:

?

编码是程序员的职责,一个好的信息技术产品必然有高质量的代码,高质量的代码首先一点它必须遵守某种编程规范。

?

一个软件整个生命周期内成本的80%用于维护。

?

几乎没有一个软件在整个生命周期内全部由它的原始作者来维护。

?

程序最重要的是正确性,其次是可维护性,最后才是效率。

?

如果你的源代码被做为产品发布,那么你必须保证它和其他产品一样很好的包装并保持整洁。

?

大量数据表明,软件存在问题或者隐患,很大一部分是由于未遵守基本准则所致,如果能在项目早期明确规则,则会避免很多麻烦。

?

好风格应该成为一种习惯。

如果你在开始写代码时就关心风格问题,如果你花时间去审视和改进它,你将会逐渐养成一种好的编程习惯。

一旦这种习惯变成自动的东西,你的潜意识就会帮你照料许多细节问题,甚至你在工作压力下写出的代码也会更好。

使用范围使用范围?

C/C+/Java编程语言。

?

资源受限的系统,对性能有较严格要求的,如CPU主频较低、RAM/ROM空间较小、外围存储空间有限。

执行等级执行等级本规范种每一条款都有一个执行等级,分为:

?

强制强制代码无条件的满足强制等级的条款,不满足的代码必须进行修改,以满足相关的条款。

?

建议建议条款非强制执行的,一般情况下遵照条款有助于改善代码的质量。

本规范中凡是未注明【建议】的均为强制条款。

本规范中凡是未注明【建议】的均为强制条款。

北京人民电器厂有限公司软件编码规范1目录目录11文件结构文件结构.11.1版权和版本的声明.11.2头文件的结构.21.3定义文件的结构.21.4头文件的作用.31.5目录结构.32程序版式程序版式.42.1空行.42.2缩进.52.3换行与对齐.72.4空格.92.5长行拆分.103注释注释.123.1注释要求.123.2注释格式.174命名规则命名规则.204.1基本规则.204.2数据类型命名.214.3变量命名.224.4常量命名.234.5函数命名.244.6常用缩写.245基本语句基本语句.285.1判断语句.285.2循环语句.295.3switch分支语句.335.4goto语句.335.5循环语句的效率.346表达式表达式.366.1基本规则.366.2控制语句表达式.386.3带副作用的表达式.407变量、常量和结构变量、常量和结构.417.1变量.417.2常量.427.3结构体和联合体.447.4算术类型转换.49北京人民电器厂有限公司软件编码规范28指针和数组指针和数组.528.1指针转换规则.528.2指针运算规则.538.3指针的有效性.549函数设计函数设计.559.1声明和定义.559.2函数参数.579.3函数返回值.589.4函数结构.6010预处理预处理.6810.1基本规则.6811其它编程规则其它编程规则.7111.1文档化.7111.2字符集.7111.3标准库.7211.4程序效率.7211.5质量保证.7412程序测试与维护程序测试与维护.7912.1基本规则.7912.2调测方法.8012.3测试与维护.8313代码编辑、编译和审查代码编辑、编译和审查.8513.1基本规则.8514版本历史版本历史.86北京人民电器厂有限公司软件编码规范111文件结构文件结构每个C程序通常分为两个文件。

一个文件用于保存程序的声明(declaration),称为头文件。

另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。

C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀。

1.1版权和版本的声明版权和版本的声明版权和版本的声明位于头文件和定义文件的开头,主要内容有:

(1)版权信息;

(2)文件名称,标识符,摘要;(3)当前版本号,作者/修改者,完成日期;(4)版本历史信息。

示例如下:

/*公司名称:

*版权(c):

*模块名:

*相关文件:

*文件名:

*文件描述:

*版本:

*作者:

*-*备注:

*-*修改信息:

*修改日期版本修改人修改内容*/北京人民电器厂有限公司软件编码规范21.2头文件的结构头文件的结构头文件由三部分内容组成:

(1)头文件开头处的版权和版本声明(见上例);

(2)预处理块;(3)函数和类结构声明等。

假设头文件名称为head.h,头文件的结构见以下结构。

(1)为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。

(2)用#include格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。

(3)用#include“filename.h”格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

(4)头文件中只存放“声明”而不存放“定义”。

(5)不提倡使用全局变量,尽量不要在头文件中出现象externintvalue这类声明。

示例如下:

/*版权和版式声明见上例,此处略*/#ifndef_HEAD_H_/*#define_HEAD_H_*/#include/*引用标准库的头文件*/#include“MyConfig.h”/*引用非标准库的头文件*/externUINT16guiValue;/*全局变量声明,不建议使用全局变量*/voidvFunction();/*全局函数声明*/#endif1.3定义文件的结构定义文件的结构定义文件有三部分内容:

(1)定义文件开头处的版权和版本声明;

(2)对一些头文件的引用;(3)程序的实现体(包括数据和代码)。

假设定义文件的名称为Driver.c,定义文件的结构参见下例:

/*版权和版式声明见上例,此处略*/#include“head.h”/*引用头文件*/*全局函数的实现体*/voidvAddFunc()北京人民电器厂有限公司软件编码规范3/*文件内部函数的实现体*/staticvoidvSubFunc()1.4头文件的作用头文件的作用

(1)通过头文件来调用库功能。

在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。

用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。

编译器会从库中提取相应的代码。

(2)头文件能加强类型安全检查。

如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。

1.5目录结构目录结构如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存于不同的目录,以便于维护。

例如可将头文件保存于include目录,将定义文件保存于source目录(可以是多级目录)。

如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。

为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。

北京人民电器厂有限公司软件编码规范42程序版式程序版式版式虽然不会影响程序的功能,但会影响可读性。

程序的版式追求清晰、美观,是程序风格的重要构成因素。

2.1空行空行规则2-1-1:

相对独立的程序块之间必须加空行。

规则2-1-1:

相对独立的程序块之间必须加空行。

下述例子不规范:

if(NULL=pValue)./*程序代码*/luiTemp=luiValidValueTEN_BIT;lulSum=(UINT32)luiTemp*luiTemp;应改写为:

if(NULL=pValue)./*程序代码*/*此处空一行*/luiTemp=luiValidValueTEN_BIT;lulSum=(UINT32)luiTemp*luiTemp;规则2-1-2:

相对独立的变量和常量说明之后必须加空行。

规则2-1-2:

相对独立的变量和常量说明之后必须加空行。

相对独立的变量声明之间、常量声明之间以及函数体中变量声明与应用代码之间都必须加空行。

例如:

相对独立的变量声明之间:

SINT16siReactiveArrSAMPLE_DATA_LENGTH;/*无功功率计算数组*/*此处空一行*/UINT32ulNeedCurValueArreNeedISum_Last;/*累加需用值存放数组*/SINT32slNeedPowerValueArreNeedPSum_Last;相对独立的常量声明之间:

#defineFACTOR_MULTIPLE(100U)/*功率因数放大倍数*/#defineKW_UNIT_MULTIPLE(1000U)/*功率单位缩放倍数*/*此处空一行*/#defineCAPACITANCE_CHARACTER(0U)/*容性电路特性*/#defineINDUCTANCE_CHARACTER(1U)/*感性电路特性*/函数体中变量声明与应用代码之间:

voidvDeviceInit(void)UINT16luiTemp=0;/*不同数据类型的声明之间空一行*/北京人民电器厂有限公司软件编码规范5UINT32lulFreq=0;/*变量声明和应用代码之间空两行*/lulFreq=FOSC1;规则2-1-3:

每个函数定义结束之后都要加一行空行。

规则2-1-3:

每个函数定义结束之后都要加一行空行。

例如:

UINT16uiBaseValue(SINT16*pin,UINT32ulCriticalValue)./*代码*/*此处空一行*/*=函数头注释=*/UINT16uiValidValue(SINT16*pin,UINT16uiOrigValue)./*代码*/规则2-1-4:

注释与其上面的代码必须用空行隔开。

规则2-1-4:

注释与其上面的代码必须用空行隔开。

示例:

如下例子,显得代码过于紧凑:

/*codeonecomments*/programcodeone;/*codetwocomments*/programcodetwo;应如下书写:

/*codeonecomments*/programcodeone;/*此处空一行*/*codetwocomments*/programcodetwo;2.2缩进缩进规则2-2-1:

程序块要采用缩进风格编写,每次缩进的空格数为规则2-2-1:

程序块要采用缩进风格编写,每次缩进的空格数为4个,函数或过程的开始、结构的定义及循环、判断(if、switch-case)等语句中的代码都要采用此缩进风格。

个,函数或过程的开始、结构的定义及循环、判断(if、switch-case)等语句中的代码都要采用此缩进风格。

示例如下:

函数、结构体、循环、if语句、switch语句分别举例。

(1)if语句if(0=luiValidValue)北京人民电器厂有限公司软件编码规范6.;/*与if的垂直位置相比,缩进4个空格*/

(2)for语句for(luiCnt=0;luiCntluiTemp)/*与上一行左对齐*/luiTemp+;if(MINluiTemp)/*与上一行左对齐*/luiTemp-;北京人民电器厂有限公司软件编码规范8规则2-3-3:

if、for、do、while、case、switch、default等语句自占一行

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1