收藏 分享(赏)

C代码审查表(条款解释).doc

上传人:涵涵文库 文档编号:5285617 上传时间:2019-02-18 格式:DOC 页数:17 大小:119.50KB
下载 相关 举报
C代码审查表(条款解释).doc_第1页
第1页 / 共17页
C代码审查表(条款解释).doc_第2页
第2页 / 共17页
C代码审查表(条款解释).doc_第3页
第3页 / 共17页
C代码审查表(条款解释).doc_第4页
第4页 / 共17页
C代码审查表(条款解释).doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、C 代码审查表(条款解释)一、 文档说明此文件为广州高科通信设备有限公司C 代码检查表(修订)的条款解释文件,用于在 QC 代码检查中配合C 代码检查表 使用。如果此文件与其它相关文件发生冲突或是其它未尽事宜,以公司文件GK-RU038 软件设计 C.C+编码暂行规定为准。二、 C 代码审查表条款解释1、 文件结构1.1 头文件和定义文件的名称是否合理?(1)符合基本的命名规则,用相应的英文进行命名,不应该出现仅靠大小写区分的相似的文件名;(2)当某一头文件仅被一个定义文件引用时,比如某些驱动程序,两文件名应该有明确的关联性,例如“drv_21Q50.c“和”drv_21Q50.h“。1.2

2、头文件和定义文件的目录结构是否合理?(1) 当一个软件的头文件数目比较多,应将头文件和定义文件分别保存于不同的目录,以便于维护。如可将头文件保存于 include 目录,将定义文件保存于 source 目录。(2) 如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明” 。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。1.3 版权和版本声明是否完整?是否符合标准规定?版权和版本的声明位于头文件和定义文件的开头,主要内容有:(1)版权信息。(2)文件名称,标识符,摘要。(3)当前版本号,作者/修改者,完成日期。(4)版本历史信息。例如:/* * memo

3、ry.c - xdr routine for coding/decoding WDB memory structures * Copyright 1998-2002 GuangZhou GaoKe Communication Co.Ltd. * modification history*-* 01e,30jan96,elp added windll.h, changed xdr_TGT_ADDR_T in macro.* 01d,10jun95,pad Included rpc/rpc.h* 01a,03oct94,tpr written.*-*/格式详见公司GK-RU038 软件设计 C.C

4、+编码暂行规定.doc 。1.4 头文件是否使用了 ifndef/define/endif 预处理块?在某个文件中引用同一个个头文件两次获更多次,将会造成重复定义之类的变异错误。应该使用#ifndef/#define/#endif 预处理块防范被多次引用。建议此类宏名应该与文件名一致,而且使用大写,“.h”用“_H”代替,例如在一个 graphics.h 头文件中防止重复引用:#ifndef GRAPHICS_H /* 防止 graphics.h 被重复引用 */#define GRAPHICS_H#include /* 引用标准库的头文件 */#include “myheader.h” /*

5、 引用非标准库的头文件 */void Function1(); /* 全局函数声明 */#endif1.5 头文件中是否只存放“声明”而不存放“定义”?头文件是用来声名而不是定义的。如果在头文件中定义变量或常量,会使得所有引用其的定义文件都产生这样的变量或常量。2、 程序的版式2.1 空行是否得体?(1)在每个类声明之后、每个函数定义结束之后都要加空行。(2)在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。(3)建议函数体间的空行为 23 行,逻辑块间空一行。2.2 缩进是否遵守 4 个空格的规定?变量定义是否缩进?缩进使含有嵌套的代码在逻辑上更加清晰。应该直接使用空格

6、进行缩进,或定义制表符等于 4 个空格,消除在不同的编辑器下代码格式的混乱。2.3 代码行内的空格是否得体?所谓空格得体,是指:(1)关键字之后要留空格,以突出关键字。例如 switch (nBoard), while (condition)。(2) , 、 ;向前紧跟, , 之后要留空格,如 Function(x, y, z)。如果;不是一行的结束符号,其后要留空格,如 for (initialization; condition; update)。(3)赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=” 、 “+=” “=”、“”这类操作符前后不加空格。例如asWanCo

7、nf10.abIPLocal0 = 0x8a;2.4 长行拆分是否得体?(1)代码行最大长度宜控制在 70 至 80 个字符以内。标准显示器/输出设备(字符终端,缺省宽度的显示窗口)的宽度都大于等于 80 个字符,控制代码行的最大长度可以保证代码在显示,编辑,打印等情况下都不会发生因为宽度不够而折行的现象。(2)长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符) 。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。例如if (very_longer_variable1 = very_longer_variable12)/* 放在一行 */* 结构、联合、枚举的例外

8、*/thpedef strcut Message; /* 放在一行 */2.6 “” 和 “” 对齐是否和所使用的开发工具一致?在第三方代码的基础上修改,其对齐方式应该与第三方代码保持一致。否则采用公司标准。2.7 “(” “) ”前后的水平空格是否符合规范?(1)函数名之后不要留空格,紧跟左括号( ;而关键字后留空格再跟左括号( 。例如,将不良书写风格void Func1 (int x,int y,int z);for(i=0;i=value-EPSINON) i (float)nNumb1)8.2 变量值问题:()变量的初始化或缺省值有错误吗?尽可能在定义变量的同时初始化该变量(就近原则)

9、 ,如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误。()变量发生上溢或下溢吗?()变量的精度够吗?附:常用变量的取值范围及精度变 量 类 型 宽度(比特数) 取值范围整型变量(int) 16 或 32 (215-1) 或 (231-1)无符号整型变量(unsigned int) 16 或 32 0 216 - 1 或 0 232 - 1短整型变量(short) 16 (215-1)无符号短整型变量(unsigned short) 16 0 216 - 1长整型变量(long) 32 (231-1)无符号长整型变量(unsigned

10、 long) 32 0 232 1 浮点型(float) 32 6 位精度,1E-37 1E37双浮点型(double) 64 10 位精度,1E-37 1E37字符变量(char) 8 127 127无符号字符变量(unsigned char) 8 0 2558.3 逻辑判断问题:()由于精度原因导致比较无效吗?尤其不能直接将浮点型变量与常量作“等于”比较,参见 4.4 所述。()表达式中的优先级有误吗?附: C 操作符优先级( 优先级从高到低排序)( ) - . ! + - - 强制类型转换符(type) 指着修饰符* 取址运算符char ch;if ( (fp = fopen(“test”, “w”) = NULL) /* 判断文件打开是否正确,不正确则退出 */printf(“Cannot open file. n”);exit(1);while (!feof(fp) /* 判断文件是否结束 */ch = getc(fp);printf(“%c”, ch);fclose(fp); /* 关闭文件 */

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

当前位置:首页 > 实用文档 > 统计图表

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报