版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.@;C语言编程规范说明书编写人:编写日期:审批人:审批日期:当前版本:文件编号:
目录TOC\o"1-3"\h\z第一章引言 1第一节编写目的 11.1.1作用 11.1.2预期读者 1第二节编写背景 11.2.1文件名称及版本号 11.2.2任务提出者 11.2.3任务承接者及实施者 11.2.4使用者 11.2.5与其它文件的关系 1第二章UNIX下C程序编码规范 2第一节程序的构成 22.1.1C程序要素 22.1.2C程序构成举例 2第二节源文件的命名规则及构成 32.2.1文件扩展名 32.2.2文件头的注释 42.2.3源文件的构成 42.2.4文件分类存放: 4第三节函数命名规则及构成 42.3.1函数命名: 42.3.2函数头的注释 42.3.3函数体的书写格式 52.3.4函数返回 6第四节语句的书写格式 62.4.1SWITCH语句的书写格式 62.4.2IF语句的书写格式 62.4.3WHILE语句的书写格式 62.4.4DO语句的书写格式 72.4.5FOR语句的书写格式 72.4.6函数的书写格式 7第五节常量变量及库表结构命名 72.5.1常量命名 72.5.2变量命名 7第六节程序的变更格式 82.6.1程序的更改 82.6.2程序版本的修改 9第七节其他格式 92.7.1条件编译语句的使用 92.7.2有关内嵌SQL语句的规范 9第八节函数例程 10第九节Makefile文件例程 11易联通(PowerLink3.0)编程规范说明书V1.0联想(北京)有限公司第12页第一章引言第一节编写目的1.1.1作用为使项目在软件开发过程中源代码的编写和管理规范化,使源代码可读性好、兼容性好,易维护等,特制定如下规范,并要求全体开发人员遵循。编程规范书是根据多个项目开发经验及部门其他项目编程规范书的基础上。它是编程阶段程序编写的指导性文件。1.1.2预期读者本文档的阅读对象是本项目软件开发人员、软件测试人员、软件维护人员,也供其他项目编程参考。第二节编写背景1.2.1文件名称及版本号1.2.2任务提出者综合前置平台总体设计组1.2.3任务承接者及实施者王华,徐戟1.2.4使用者预期读者,也供有关领导审阅1.2.5与其它文件的关系作为总体设计中代码设计的附录文件
第二章UNIX下C程序编码规范本章定义UNIX下C语言编码的规范,鉴于UNIX是一组相似的操作系统的集合,本节内容适用于X86上SCOUNIX、RS6000AIX、Linux等操作系统下的C和ESQL/C编程。第一节程序的构成2.1.1C程序要素C语言程序是由各种说明和定义组成。具体地说,C程序的要素包括∶①包含文件说明 #include<...>#include“…”②常数定义 #define...③宏定义 #define...④类型说明 typedef...⑤外部变量说明 extern ...⑥全局变量定义⑦外部函数引用说明⑧内部函数引用说明⑨函数描述2.1.2C程序构成举例下面举例说明各种成分的结构和形式。 /**************************************************************** * 包含文件说明 ****************************************************************/ #include<stdio.h> /**************************************************************** * 常数定义 ****************************************************************/ /*ErrorCode定义*/ #defineERR_FILEIO (-1) /*fileI/Oerror */ #defineERR_SYS (-2) /*systemserviceerror */ #defineERR_MALLOC (-3) /*memoryallocationerror */ #defineERR_PARAMETER (-4) /*parametererror */ /*StatusCode定义*/ #defineSTS_IDLE 1 /*idle */ #defineSTS_READY 2 /*ready */ #defineSTS_RUN 3 /*running */ #defineSTS_STOP 4 /*stop */ /***************************************************************** * 宏定义 ****************************************************************/ #defineADD(x,y) ((x)+(y)) /**************************************************************** * 类型定义 ****************************************************************/ typedefintegerlong; structabc { intiA; /* ... */ intiB; /* ... */ intiC; /* ... */ }; /**************************************************************** * 外部变量说明 ****************************************************************/ externintegerg_Xyz; /* ... */ externshortg_Abc; /* ... */ /**************************************************************** * 全局变量定义 ****************************************************************/ int g_CommandData; /* ... */ /**************************************************************** * 函数引用说明 ****************************************************************/ externintWIN_GetLine(); externintSomeFunc(); intMyFunc1(); intMyFunc2(); /**************************************************************** * 函数描述 ****************************************************************/ intMyFunc(intargc,char*argv[]) {}第二节源文件的命名规则及构成2.2.1文件扩展名*.h 用于记载说明、定义的源文件*.c 用于记载C程序描述的源文件*.ec 用于记载C程序和Informix数据库处理的源文件2.2.2文件头的注释/****************************************************************** 文件名 : FileName* 文件功能 : Function* 编程者 : XxxxxMmmmmm* 初作时间 : OriginalTime * 版本 : 1.0* —————————————————————————————— * 时间 修改者 注释 * 1998/09/29 xxxx 初期作成 * 1998/10/04 yyyy 功能追加/修改*****************************************************************/2.2.3源文件的构成关联性很强的函数、变量应集中在同一源文件中描述。源文件中共同的定义和说明应集中在一个头文件中描述。一个源文件的大小一般应尽量控制在2000行以内。2.2.4文件分类存放:建议按如下目录存放文件:($home)/src: 存放系统程序源代码;($home)/bin: 存放系统可执行文件;($home)/etc: 存放系统配置文件;($home)/log: 存放系统运行记录文件;第三节函数命名规则及构成2.3.1函数命名:自编函数应当与系统函数、标准函数区分开来,以便读者从函数名上就可以区分出是否为自编函数。建议给可分类的函数加前缀。函数描述的每个单词首字母大写其余字母小写,单词之间直接连接,不加下划线。intPUB_PrintReset(void); /*公共函数*/intPRT_PrintLine(void); /*打印函数*/intPrintReset(void); /*一般函数*/2.3.2函数头的注释函数头的注释里应包括:函数名、功能、作者、参数说明、完成日期和维护时间,维护者,维护简要说明。调用的调用自定义函数、全局变量尽量写清楚,程序的处理流程比较复杂可在注释里简单阐述。还可以有其他需要说明的栏目。/****************************************************************** 函数名 : FunctionName* 函数功能: FunctionFunction* 编程者: XxxxMmmm* 输入参数: char*sDataStream -DatasSendtoPrinter* intiDataLen -LengthofSendDatas* charcPrnDev -0x01Printercomponent;* -0x02Featurecomponent;* char*sDevStatus -DeviceStatusReadFromPrinter* 输出参数:* 返回值: * 调用自定义函数: Callself-definedFunctionList* 处理概要 : Process* 全局变量: ExternVariableandMeaning* 修改的全局变量:UpdateExternVariable* 完成时间: 1998-04-17* 最后修改时间: 1998-04-17*****************************************************************/2.3.3函数体的书写格式为了使程序具有良好的可读性,必须对语句的书写格式及空格、空行的应用进行了明确的规定。(1)每个函数不应太长,建议在300行以内;(2)“{”和“}”要分别占一行,并且对齐;(3)函数内,实现同一功能的语句与前后其他语句用空行分开,便于阅读;(4)不建议写长语句,以便程序的阅读和输出;(5)程序的相邻层次的语句之前的留空个数一般为一个TAB键,编辑器中一个TAB键设置为四个空格。(6)在程序行末的注释最好对齐;(7)注释必须以“/*......*/”括起来,不可以用“//”,主要目的是保证程序的可移植性;(8)程序里,表达式之间应用空格,以分隔清楚;(9)尽量不用难理解的语句。(10)如果一对{}中间的语句超过20行,结束的}符号要求指出起始{的位置。(11)strcmp,memcmp要用==0,来表示相等。intTest(intc_argc,char*c_argv[]){inti; /*变量说明*//*本段程序说明*/for(i=0;i<c_argc;i++){ /**/if(strcmp(c_argv[i],"display")==0){ /**/statemeents;}statemeents;}InitialSomething(); /**/}2.3.4函数返回函数返回一般都为整型。如果用返回值表示结果时,返回值为0,表示函数执行正常;返回值小于0,表示函数执行错误。第四节语句的书写格式2.4.1SWITCH语句的书写格式(case和switch差两列,语句和case差两列)switch(ch){case1: /*注释*/ statements; break;case2: /*注释*/ statements; break;default: /*注释*/ statements; break;}2.4.2IF语句的书写格式if(条件){ /*注释*/statements;}elseif(条件) { /*注释*/statements;}else { /*注释*/ statements;}2.4.3WHILE语句的书写格式while(条件){ /*注释*/statements;}2.4.4DO语句的书写格式do{statements;}while(条件); /*注释*/2.4.5FOR语句的书写格式for(..;..;..){ /*注释*/statements;}2.4.6函数的书写格式intfunc(intx,char*y){ intp,q; /*注释*//*注释*/ statements;}第五节常量变量及库表结构命名2.5.1常量命名常量包括宏定义和自定义类型,常量名必须大写。#define NUL 0typedefstruct{statements;}MYSTRU;2.5.2变量命名变量应尽量按它所表示的内容来命名,且变量名的长度要合适,最好为3~15个字符,循环变量可以用ijk等单个字母表示。如果变量名由几个单词表示,则单词首字母大写。全局变量加前缀g_,参数加前缀c_。intg_iPrnStat; /*全局变量*/intc_iPrnStat; /*函数参数*/charcPrnStat; /*局部变量*/根据“匈牙利命名法”,将一个变量名由以下几部分构成:前缀描述符+名称其中,前缀描述符说明标识符的类型,用小写字母,名称说明标识符的作用,从变量名中我们可以明白,该变量是整型(int),表示字符串的长度。前缀描述符的定义如下表所示:序号数据类型前缀描述符CharcunsignedcharucIntiShortshLonglFloatfBooleanbHandlehUnsigneduPointerpDoubled函数指针pfStructstArrayaVoidvUnsignedShortus17.以0结尾的字符数组acz18以0结尾的字符指针pcz19.FILE*fp20.二维指针pp21.二维数组aa22.系统通过typedef定义的整数t23.typedef定义的类型T第六节程序的变更格式2.6.1程序的更改文件提交以后,程序的修改须按以下格式进行。(1)在文件头的注释中进行登记* ——————————————————————————————* 时间 修改者 注释* 1998/09/29 xxxx 初期作成 * 1998/10/04 yyyy 修改内容1* 1998/10/09 zzzz 修改内容2*****************************************************************/(2)段落删除/*deletedbyXY1998/10/12*/ 尽量用/**/来注释,如果实在需要用条件编译来封住一段程序,用以下风格:#ifdefDELETE001所需删除的段落#endif/*endifDELETE001*/(3)段落增加/*addedbyXY1998/10/12begin*/所需增加的段落/*addedbyXY1998/10/12end */(4)段落修改 如果是大段需要修改则用下面方法:/*modifieddelbyXY1998/10/12beginmodifieddelbyXY1998/10/12end*//*modifiedaddbyXY1998/10/12begin*//*modifiedaddbyXY1998/10/12end*/或者 #ifdefMOD_DEL_001 #endif/*endifMOD_DEL_001*//*modifiedaddbyXY1998/10/12begin*//*modifiedaddbyXY1998/10/12end*/如果只有一两行修改,则直接按下面进行:/*modifiedbyXY1998/10/12begin*//*old*/new/*modifiedbyXY1998/10/12end*/原则上程序修改后要在段落旁边加注修改原因。2.6.2程序版本的修改程序初次提交,版本号为1.0。程序以后每次修改,都要在程序里标示,提交时根据改动大小,版本号升级。当程序稳定后,再次提交可将修改后的不必要的程序及其标示、注释删除。第七节其他格式2.7.1条件编译语句的使用使用调试时,调试语句应写在#ifdefDEBUG和#endif之间,这样,只需简单地改变编译命令行参数就可以删除或使用调试语句。与操作系统或开发环境有关的部分应当写在条件编译语句之中,这样便于系统的移植。例如:在制作可用SCOUNIX和AIX下软件时,依赖于SCOUNIX的部分应写在#ifdefSCO和#endif之间,而依赖于AIX的部分应写在#ifdefAIX和#endif之间。 2.7.2有关内嵌SQL语句的规范在应用中,常常需要内嵌SQL语句完成对数据库的访问,使用时应遵循如下规范:所有SQL语句的开头必须使用“EXECSQL”,以同一般C语句区别;主变量前必须使用“:”。宣告必须用下面形式EXECSQLBEGINDECLARESECTION;EXECSQLENDDECLARESECTION;游标主变量要在FETCH时指定,不要在declare时指定第八节函数例程/******************************************************************函数名:ConvertPoolToMsgFromMsg*函数功能:从数据存储池打包*编程者:zfx*输入参数:ptMessagec_pMessageBuf字符串存储地址指针 char*c_iMessageBufLen字符串长度intc_iMessageBufLen字符串格式代号*输出参数 :*返回值 :<0失败>0包长度*调用自定义函数:*处理概要:*全局变量:*修改的全局变量:*完成时间:2002/02/02*最后修改时间:2002/02/02*****************************************************************/intConPoolToEucpRecvDefMsg(ptMessagec_stMessage,char*c_pMessageBuf,intc_iMessageBufLen){ intiTotalLen=0; intiSysHeadLen=0; characzSysHead[129]; intiPubHeadLen=0; characzPubHead[129]; intiRecvDataLen=0; characzRecvData[4097]; memset(aczRecvData,0,sizeof(aczRecvData)); iRecvDataLen=PutRecvData(aczRecvData,c_stMessage); if(iRecvDataLen<0) { returniRecvDataLen; } iTotalLen=iTotalLen+iRecvDataLen; memset(aczPubHead,0,sizeof(aczPubHead)); iPubHeadLen=PutRecvPubHead(aczPubHead); if(iPubHeadLen<0) { returniPubHea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 股份制企业创立人合同书格式
- 建筑工程劳务分包合同
- 工程合同范本在线查阅
- 2024新版简单食堂承包合同书范本
- 简单股权转让协议书范本
- 建筑维修保养服务补充协议
- 2023年高考地理重点难点考点通练-服务业(原卷版)
- 1.1坚持改革开放(导学案) 2024-2025学年统编版道德与法治九年级上册
- 个人投资合同协议样本
- 生物中图版自主训练:第一单元第二章第二节染色体结构变异对性状的影响
- 绿色供应链管理企业一般要求符合性评价表
- 中航集团招聘笔试题库2024
- 某系统安防工程施工组织设计方案
- 2024年7月13日云南省昆明市直遴选笔试真题及解析综合管理岗
- 《明朝的统治》(2016年人教版)
- 2024年浙江省宁波市文史研究馆办公室招聘6人历年(高频重点复习提升训练)共500题附带答案详解
- 个人信息安全保护管理规定
- 野生菌订购合同范本
- DB32T-住宅电梯使用安全管理规范编制说明
- (正式版)QC∕T 625-2024 汽车用涂镀层和化学处理层
- 2024年中级咖啡师技能鉴定考前必刷必练题库500题(含真题、必会题)
评论
0/150
提交评论