
C语言代码检查内容(第一阶段).doc
4页C语言代码检查项(第一阶段)第一阶段主要以C语言编程排版为主要检查项,共13条:1. 程序块要采用缩进风格编写,缩进的空格数为4个,目前使用sourceinsight时要求使统一的设置,通过替换统一的GLOBAL. CF3來实现2. 不允许把多个短语句(不包括变量定义)写在一行中,即一行只写一条语句示例:如下例子不符合规范rect. length = 0; reel, width = 0;应如卜-书写rect.length = 0;rect. width = 0;3. if> for、do^ while> case^ switch、default 等语句自占一行,且 if、for、do、while等语句的执行语句部分无论多少都要加括号{} 0 示例:如下例子不符合规范i f (NULL == pUserCR) return;应如下书写:if (NULL = pUserCR){return;}4. 遇条件判断(二二、!二)时,常量放左边,变量放右边,以防出现变“二”的错误 示例:如下例了不符合规范if (pUserCR == NULL){return;}应如下书写:if (NULL = pUserCR){return;}5. 函数的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。
6. 程序块的分界符(如C/C++语言的大括号{,和})应各独占一行并位于同一列,同时与引用它们的语句左对齐在函数体的开始、类的定义、结构的定义、枚举的定 义以及if、for、do、while> switch、case语句中的程序都要采用如上的缩进方式 示例:如下例子不符合规范for (...) {...// program code… // program codevoid exampl e fun(voi d){… // program code}应如下书写for (…){… // program codeif (・.・){… // program code}void example_fun(void){… // program code}7. 两个以上的关键字、变量、常呆进行对等操作时,它们之间的操作符之前、之示或者前 后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如一>),示不应加 空格说明:采用这种松散方式编写代码的n的是使代码更加清晰由于留空格所产牛的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留 空格,如來语句已足够清晰则括号内侧(即左括号后而和右括号询而)不需要加空格, 多重括号间不必加空格,因为在C/C++语言中括号已经是最清晰的标志了。
在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格 给操作符留空格时不要连续留两个以上空格示例:a) 逗号、分号只在后而加空格int a, b, c;b) 比较操作符,赋值操作符〃二〃、〃+二〃,算术操作符〃+〃、”囂,逻辑操作符〃&&〃、〃&“,位域操作符〃<<〃、〃"等双目操作符的前后加空格if (current_time >= MAX_TIME_VALUE)a = b + c;a *二 2;a = b 2;中”、”7、(地址运算符)等单目操作符前后不加空格P二’a; 〃内容操作〃*〃与内容之间flag = ! isEmpty; //非操作"!"与内容Z间 p = &mem; //地址操作与内容之间 i++; // 〃++〃,〃一〃・内容Z间d) 〜>〃、〃.〃前后不加空格p->id二pid; // "-〉"指针前后不加空格e) if、for> while> switch等与后面的括号间应加空格,使if等关键字更为突出、明显if ((a >= b) && (c > d))& 程序中不允许直接使用数字代表具体含义,需要使用宏和枚举定义后再便用.if(sys io. vga mode == 0){sys_io. vga mode = 1;}应使用枚举定义后再使用,使程序可读性更强.if(sys io. vga mode == MODE 800x600){sys_io. vga mode = MODE」024x768;}9. 代码中无用的注释和打印应及吋去掉,不应该出现类似〃11111〃的无意义注释或打卬,调 试时用的醍目的打印,调试完成应该去掉或改成更有意义的,対理解代码有帮助的打 印.如下列的打印应修改成更有意义的语句:TRACE Cll 11 lll\nz,)TRACE(/z 555555555555 sys io. vga auto = %d\rT, sys io. vga auto)TRACE(〃@@@@@@@@sys get GUI SYS CMD QUERYJJSB LOG M0NTH\n〃)TRACE (" rec_num=%d\n,z, rec num)io.源文件头部应进行注释,列岀:版权说明、版本号、牛成FI期、作者、模块目的/功 能、主要函数及其功能、修改口志等。
示例:下面这段源文件的头注释比较标准^Copyright*File name:(C), 2004-2009, Ilanbang Tech. Co., Ltd.//文件名^Author://作者*Version://首次版本例如:vi. 0.0*Date://首次版本完成LI期 例如:20091103*Description: // 模块描述^History: //历史修改记录* 1. Version: // 例如:VI. 0. 1 20091103* Author:* Modification:1). •••.2).・•・.* 2....说明:Description —项描述本文件的内容、功能、内部各部分之间的关系及本文件与 其它文件关系等History是修改历史记录列表,每条修改记录应包括版木号、修改者及 修改内容简述11. 函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值、调 用关系(函数、表)等示例:下面这段函数的注释比较标准I >1^ >1^ >1^ >1^ >1^ >1^ >1^/ ^T% ^T% ^1% ^1% ^T% ^T% ^1%^Description:*Input://函数功能、性能等的描述//输入参数说明,包括每个参数的作//用、取值说明及参数间关系。
^Output://对输出参数的说明^Return://函数返回值的说明^3z sXx ■ A %AZ vX ■ A kIz %AZ ■ A siz ■ A six ■ A ^Zx ■ A ^Zx %xz I夕夕 4 "卜 夕a、V、"▲、夕 4 "卜 V、"卜 V、夕a J V、"卜"a J V、"▲、夕介,▲、"卜 夕 4 "卜"a J "▲、夕 4 "卜 "▲、夕a ・"卜 夕 b,▲、"a、夕 b V、*」■ "■*12. 注释格式尽量统一,在代码上方的注释使用“/*……*/”,在代码右方的注释使用“//”注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼冇的,建 议多使用中文,除非能用非常流利准确的英文表达13. 编译时使用-Wall选项,编译完成无警告.更严格的编译警告可以检查很多编码过程中的错误,加快开发进度.-Wall nJ以检查出判 断语句中赋值的错误:if (pUserCR = NULL)return;}ifU-Wextra编译选项可以检査出类型不匹配的情况:Sint32 a;Uint32 b; //省略赋值和执行语句lf( b >= 0 && a > b)会出现无符号类型和0比较始终成立及无符号和有符号型比较类型不匹配的提示. 常用的语法错误使用-Wai 1 -Wextra -Wno-unused都可以检查得岀.。












