文档库 最新最全的文档下载
当前位置:文档库 › C++编码规范试题三

C++编码规范试题三

C++编码规范试题三
C++编码规范试题三

C++编码规范试题(满分100分)

一、单选题(5*2)

1、关于函数参数,不正确的说法是:

A、对参数输入和非参数输入都要检查有效性。

B、防止将函数的参数作为工作变量。

C、在调用函数填写参数时,应尽量减少没有必要的默认数据类型转换或强制数据类型转换

D、非调度函数应减少或防止控制参数,尽量不要使用数据参数。

2、宏定义#define SQUARE(a) ((a) * (a)) 在b = SQUARE(a++)中,a被执行了次加1

A、0次;

B、1次;

C、2次;

D、3次

3. ()关于可测性,正确的说法是:

A 断言用来处理必须处理的错误情况

B 调试时打印的出错信息只要有错误码就行了

C 软件的DEBUG版本与发行版本分为两套进行维护

D 项目组内要有一套统一的错误输出函数

4. ()以下程序中,可读性较好的有:

A rect.length = 10; char_poi = str; rect.width = 5;

B if (Trunk[index].trunk_state == 0)

C word = (high << 8) | low;

D * ++ stat_poi += 1;

5、若已经定义:int a[9], *p = a;并在以后的语句中未改变p的值,能表示a[1]地址的表达式是:

A、++a;

B、a++;

C、++p;

D、p++;

二、多选题(11*4)

1、关于变量,正确的说法是:

A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;

B、若全局变量仅在单个函数中访问,则可以将这个变量修改为该函数的静态局部变量,以降低模块间的耦合度;

C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;

D、静态全局变量过大,可能会导致堆栈溢出。

2、A机和B机通讯,使用以下结构

struct A_B_COM

{

unsigned int a:6;

unsigned int b:3;

unsigned int :7;

};

对这个结构定义的评价中,正确的是:

A、由于A机与B机可能使用不同的编译环境,该结构占用空间可能不一致;

B、由于A机与B机可能字节序不同,位域的各位在内存中存放的顺序可不一致;

C、第三个结构成员没有名字,编译会出错;

D、结构中使用位域,不仅节省了空间,也提高了存取效率。

3、关于编译预处理程序的功能包括但不限于:

A、宏定义;

B、条件编译;

C、在源代码中插入预定义的环境变量;

D、打开或关闭某个编译选项。

4、关于代码的编译、编译和审查,下面说法不正确的是:

A、在产品软件(项目组)中,可不统一编译开关选项;

B、对于安排进行单元测试的代码可以不用进行代码审查;

C、LogiScope工具不具有审查代码的功能;

D、考虑到开发人员的个人习惯,软件系统目录可自行设计

5. ()下列哪些命名是不允许的:

A Get_Card_Stat

B get_card_stat

C m_GetCardStat

D _GET_CARD_2_STAT

6. ()关于结构,正确的说法是:

A 结构占用的空间大小,不仅取决于结构成员的定义,还取决于结构成员的排列顺序,以及结构的字节对齐方式

B 结构成员的排列顺序,会影响结构成员数据的存取效率

C 功能太单一的结构,会降低代码效率

D 结构中使用位域,不仅节省了空间,也提高了存取效率

7. ()一般说来,以下哪一段代码可能有问题:

A.

unsigned int size;

while(size -- >=0)

{

……

}

B.

/*name为一字符串型变量,用以存放名称*/

unsigned char name[MAXNAMELEN];

/*分析组成名字的每一个字符,进行相应的处理*/

while(* name ++)

{

……

}

C.

unsigned char ch;

FILE * date_file;

for(;;)

{

ch = getch(date_file); /*从文件中读取一个字符*/

if(ch == EOF)

{ /*如果文件已被读完,则返回ENDOFFILE*/

return ENDOFFILE;

}

......

}

D.

struct S {int a; char b[4]; double c; };

struct S x = {1, "abcd", 45.0 };

8、()关于结构,正确的说法是:

A 结构占用的空间大小,不仅取决于结构成员的定义,还取决于结构成员的排列顺序,以及结构的字节对齐方式

B 结构成员的排列顺序,会影响结构成员数据的存取效率

C 功能太单一的结构,会降低代码效率

D 结构中使用位域,不仅节省了空间,也提高了存取效率

9、A机和B机通讯,使用以下结构

struct A_B_COM

{

unsigned int a:6;

unsigned int b:3;

unsigned int :7;

};

对这个结构定义的评价中,正确的是:

A、由于A机与B机可能使用不同的编译环境,该结构占用空间可能不一致;

B、由于A机与B机可能字节序不同,位域的各位在内存中存放的顺序可不一致;

C、第三个结构成员没有名字,编译会出错;

D、结构中使用位域,不仅节省了空间,也提高了存取效率。

10、关于编译预处理程序的功能包括但不限于:

A、宏定义;

B、条件编译;

C、在源代码中插入预定义的环境变量;

D、打开或关闭某个编译选项。

11、关于变量,正确的说法是:

A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;

B、若全局变量仅在单个函数中访问,则可以将这个变量修改为该函数的静态局部变量,以降低模块间的耦合度;

C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;

D、静态全局变量过大,可能会导致堆栈溢出。

三、判断题(23*2)

1.在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,

防止编译、链接时产生冲突。如可规定接口部分的变量与常量之前加上“模块”标

识等。

2.公共变量是增大模块间耦合的原因之一,故应减少没有必要的公共变量以降低模块

间的耦合度。

3.char a[][2][3][4][5][6][7][8];这样的全局变量申请是允许的。

4.若两个结构间关系较复杂、密切,那么应合为一个结构。

5.对模块中函数的划分及组织方式进行分析、优化,改进模块中函数的组织结构,可

以从根本上解决程序效率的问题。

6.#pragma指令可激活或者终止编译程序所支持的一些编译功能。

7.任意两个类型的指针都可以进行<, >, >=, <=, == 等比较.

8.递归调用使代码简洁,可以使用;但是在主机类函数中是绝对禁止的。

9.非调度函数应减少或防止控制参数,尽量不要使用数据参数。

10.函数设计要符合"高扇入、合理扇出"的原则。

11.头文件可以互相包含,使用"#ifndef…"的形式保证不会重复引用。

12.数组比指针寻址、运算速度快,因此推荐使用数组,少用指针。

13.程序编译时,要求放开所有的编译告警开关。

14.命名中特殊的缩略语可以不需要有注释.

15.要有自己特有的命名风格,并要始终如一。

16.通过对系统数据结构的划分与组织的改进,以及对程序算法的优化是解决软件空间

效率的有效办法。

17.在一个产品的设计中,可以为集成测试和系统测试分别定义不同的调测试开关和打

印函数,用不同的宏开关控制。

18.任意两个类型的指针都可以进行<, >, >=, <=, == 等比较。

19.头文件可以互相包含,使用"#ifndef…"的形式保证不会重复引用。

20.不允许把多个短语句写在一行中,即一行只写一条语句

21.如果编程工具提供将TAB键转换成空格键,对齐、缩进可以使用TAB键,否则应使用

空格键

22.如下if语句正确吗?if (pUserCR == NULL) return;

23.单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。不能进行单步跟踪

的代码,要采用日志输出等形式,跟踪数据流和变量的变化.

C语言注释规范

C语言注释规范 1.注释原则 同一软件项目开发中,尽量保持代码注释规范和统一。 注释方便了代码的阅读和维护。 边写代码边注释,修改代码时要相应修改注释,保证注释和代码的一致性。 注释要简洁明确,不要出现形容词。 对于写的好的注释,我们将是第一个受益者。 大型软件开发中,通过别人的注释可以快速知道他人所写函数的功能,返回值,参数的使用。 2.文件头部的注释 示例: / * Program Assignment : 该文件的作用 * Author: 作者 * Date: 2013/8/6 14:34 * Description: 该文件的描述 *****/ /* * Source code in : 源代码的路径 * Function List: * initLinear 初始化线性表 * destoryLinear 释放线性表申请的空间 * isLinearEmpty 判断线性表是否为空 * isLinearFull 判断线性表是否为满 * getLinearElementValue 取得下标为index的元素的值 */ 注意:这个函数列表可以快速查询到我们想要了解的函数。 3.结构体,全局变量等的注释 示例: typedef POLYNOMIAL USER_TYPE; /* 新的数据类型的描述*/ int a; /* 全局变量的作用*/ /* 说明结构体的功能*/ typedef struct LINEAR { USER_TYPE *data; /* 每个成员的意义(作用) */ int maxRoom; /* 每个成员的意义(作用) */

int elementCount; /* 每个成员的意义(作用) */ }LINEAR; 4.函数的注释 在逻辑性较强的的地方加入注释,以便其他人的理解,在一定的程度上排除bug。 示例: /* * Function Name: getLinearElementIndex * Purpose: 取得元素的index值 * Params : * @LINEAR linear 线性表实例 * @USER_TYPE var 类型为USER_TYPE的实例 * @int (*)() cmp 提供接口,让用户定义具体比较函数 * Return: int 返回元素的index值 * Limitation: 如果返回-1,则代表不存在var的元素 */ int getLinearElementIndex(LINEAR linear, USER_TYPE var, int (*cmp)()) { /* * 如果逻辑太过复杂,这里写明该算法的过程和思路。 */ boolean found = FALSE; int i; for(i = 0; i < && !found; i++) if(cmp[i], var) == 0) found = TRUE; if(i >= i = NOT_FOUND; return i; }

C语言编码规范

C语言编程规范 对于程序员来说,能工作的代码并不等于“好”的代码。“好”代码的指标很多,包括易读、易维护、易移植和可靠等。其中,可靠性对嵌入式系统非常重要,尤其是在那些对安全性要求很高的系统中,如飞行器、汽车和工业控制中。这些系统的特点是:只要工作稍有偏差,就有可能造成重大损失或者人员伤亡。一个不容易出错的系统,除了要有很好的硬件设计(如电磁兼容性),还要有很健壮或者说“安全”的程序。 然而,很少有程序员知道什么样的程序是安全的程序。很多程序只是表面上可以干活,还存在着大量的隐患。当然,这其中也有C语言自身的原因。因为C语言是一门难以掌握的语言,其灵活的编程方式和语法规则对于一个新手来说很可能会成为机关重重的陷阱。同时,C语言的定义还并不完全,即使是国际通用的C语言标准,也还存在着很多未完全定义的地方。要求所有的嵌入式程序员都成为C语言专家,避开所有可能带来危险的编程方式,是不现实的。最好的方法是有一个针对安全性的C语言编程规范,告诉程序员该如何做。 本规范在制定过程中,主要参考了业界比较推崇的《华为软件编程规范和范例》和《MI SRA 2004规则》,适合C语言初学者使用,目的在于在教学中培养学生良好的编程规范和意识、素质,促进所设计程序安全、健壮、可靠、可读与可维护(程序简单、清晰)。考虑到面向的是初学者,为便于教学和课程考核操作,本规范中的要求比较基本。事实上,很多公司都有自己规定的代码风格,包括命名规则、缩进规则等,学生参加工作后,应再进一步学习和应用公司的规范。 建议学生在学习本规范的同时,花点时间阅读本规范的参考文献原文,特别是熟读本规范的参考文献之一的《“安全第一”的C语言编程规范》,深刻理解编程规范与程序安全、健壮、可靠、可读、可维护间的关系和作用,在学习和工作中养成良好的编程风格。 1 排版 1.1 严格采用阶梯层次组织程序代码 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求。 程序块的分界符(如C/C++ 语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if 、for 、do 、while 、switch 、case 语句中的程序都要采用如上的缩进方式。 各层次缩进的风格采用TAB缩进(TAB宽度原则上使用系统默认值,TC使用8空格宽度,VC使用4空格宽度)。示例:

C语言编程规范

编码规范 1. 头文件编码规范 (2) 2. 函数编写规范 (2) 3. 标识符命名与定义 (2) 3.1通用命名规则 (2) 3.2 变量命名规则 (3) 3.3函数命名规则 (3) 3.4 宏的命名规则 (3) 4. 变量 (3) 5. 宏、常量 (4) 6. 质量保证 (4) 7. 程序效率 (5) 8. 注释 (5) 9. 排版与格式 (6) 10. 表达式 (7) 11. 代码编辑、编译 (7) 12. 安全性 (7) 13. 可读性 (7) 14. 可测性 (7) 15. 单元测试 (8) 16. 可移植性 (8)

1. 头文件编码规范 1. 禁止头文件循环依赖。 2. .c/.h文件不要包含用不到的头文件。 3. 禁止在头文件中定义变量。 4. 同一产品统一包含头文件排列方式。(如功能块排序、文件名升序、稳定度排序。) 5. 只能通过包含头文件的方式使用其他.c提供的接口,禁止在.c中通过extern的方式使用外部函数接口、变量。 2. 函数编写规范 1. 一个函数仅完成一件功能。 2. 重复代码应该尽可能提炼成函数。 3.为简单功能编写函数 4.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。 5. 避免函数过长,新增函数不超过100行(非空非注释行)。 6. 避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过4层。 7. 可重入函数应避免使用全局变量和禁止使用static变量。 8. 设计高扇入,合理扇出(小于7)的函数。 9. 废弃代码(没有被调用的函数和变量)要及时注释(有助于更好理解程序)。 10. 对所调用函数的错误返回码要仔细、全面地处理。 11. 函数不变参数使用const。 12. 函数应避免使用全局变量、静态局部变量和I/O操作,不可避免的地方应集中使用。 13. 函数的参数个数不超过5个。 14. 减少或禁止函数本身或函数间的递归调用 3. 标识符命名与定义 3.1通用命名规则 1. 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。 2. 除了常见的通用缩写以外,不使用单词缩写,不得使用汉语拼音。 示例: argument 可缩写为arg buffer 可缩写为buff clock 可缩写为clk command 可缩写为cmd compare 可缩写为cmp configuration 可缩写为cfg device 可缩写为dev error 可缩写为err hexadecimal 可缩写为hex increment 可缩写为inc initialize 可缩写为init maximum 可缩写为max message 可缩写为msg minimum 可缩写为min parameter 可缩写为para

C语言编写规范之注释

1、头文件包含Includes 2、私有类型定义 Private typedef 3、私有定义Private define 4、私有宏定义 Private macro 5、私有变量 Private variables 6、私有函数原型Private function prototypes 7、私有函数Private functions 8、私有函数前注释 /****************************************************************************** * * Function Name : FSMC_NOR_Init * Description : Configures the FSMC and GPIOs to interface with the NOR memory. * This function must be called before any write/read operation * on the NOR. * Input : None * Output : None * Return : None ******************************************************************************* / 9、程序块采用缩进风格编写,缩进空格为4。 10、相对独立的程序块之间、变量说明之后必须加空行; 11、较长的字符(>80字符)要分成多行书写,长表达式要在低优先级操作符划分新行,操作符放在新行之首,新行要恰当缩进,保持排版整齐; 12、循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首; 13、若函数或过程中的参数较长,则要进行适当的划分。 14、不允许把多个短语句写在一行中,即一行只写一条语句。 15、if、for、do、while、case、switch、default等语句自占一行,且if、for、 do、while等语句的执行语句部分无论多少都要加括号{}。 16、对齐只使用空格键,不使用TAB键; 17、 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求 18、 程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一 列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以 及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。 19、 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或

C语言程序设计课程标准

《C语言程序设计》课程标准 课程编码:03012208 课程模块:专业必修课 学时:90 课程类型:B类(理论+实践) 适用专业:计算机网络专业 1. 概述 C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。 本课程旨在使学生掌握程序设计的基本方法及思维,形成程序设计基本思想,掌握程序调试的基本方法,使学生初步具备程序设计能力,为学生进一步学习其他专业课程和今后从事网络技术工作打下坚实的基础。 课程的性质 《C语言程序设计》是一门专业必修课,是学习其它工科课程的基础。掌握程序设计的前提是掌握程序设计语言,C语言以其灵活性和实用性受到了广大计算机应用人员的喜爱。一旦掌握了C语言,就可以较为轻松地学习后续的Java程序设计、数据库技术等程序设计语言。本课程以程序设计思想为主线,介绍C语言的基本概念和程序设计的思想和方法,培养学生运用C语言解决实际问题的能力。 前导课程:计算机文化基础等。 后继课程:Java程序设计、数据库技术、信息安全技术、网络操作系统等。 课程设计理念 通过对多家IT企业的走访,我们了解到自学能力、动手能力、团队协作能力是现代企业对人才的共同要求。因而我们也把培养具有这些能力的学生作为我们的课程目标,把对这些能力的培养融入到平常的授课过程中。对以计算机网络、汽车电子等专业为代表的学生,主要注重项目分析,流程图设计以及编程技巧和方法的培养,为进一步培养软件项目综合开发和应用能力作准备。 1、基于工作过程,以职业能力培养为重点,与行业企业合作进行的课程开发与设计。 在课程的讲授过程中,采用任务驱动的模式,以案例教学为主。在学生掌握了相应知识点后,再提出新的问题,要求学生通过修改已有的代码加以解决。在修改代码的过程中,既培养了学生的自学能力,又锻炼了学生的动手能力。

C语言软件编写规范

C语言软件编写规范 以下是为大家整理的c语言软件编写规范的相关范文,本文关键词为语言,软件,编写,规范,北京,森馥,科技,股份有限公司,前言,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。 北京森馥科技股份有限公司 前言: 一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试

效率,从而最终保证软件的质量和可维护性。 说明: 本规范适用于公司内使用c语言编码的所有软件。本规范自发布之日起生效,以后新编写的和修改的代码应遵守本规范。 注:使用固件和操作系统源代码应保留其代码风格 1 北京森馥科技股份有限公司 目录 1.排版与格式................................................................................................................. ....................................32.标识符命名与定义................................................................................................................. ........................43.注释书写规范................................................................................................................. .. (6) 2 北京森馥科技股份有限公司 1.排版与格式 规则1:程序块采用缩进风格编写,每级缩进为4个空格。 程序块采用缩进风格编写,每级缩进为4个空格,不使用TAb键,

软件开发代码规范(C语言)

软件开发代码规范(仅供内部使用) 拟制: 审核: 核准: 签发: 文档版本:V0.11日期: 日期: 日期: 日期: 2011-5-11

目录 第一章原则 (4) 第二章排版 (5) 2.1 空行 (5) 2.2 代码行 (6) 2.3 代码行内的空格 (6) 2.4 对齐缩进 (7) 2.5 长行拆分 (8) 第三章注释 (10) 3.1 通用规则 (10) 3.2 文件注释 (10) 3.3 函数注释 (11) 3.4 数据注释 (12) 3.5 代码注释 (12) 第四章命名 (15) 4.1 通用命名规则 (15) 4.2 文件命名 (15) 4.3 类型命名 (15) 4.4 变量命名 (16) 4.5 常量命名 (17) 4.6 函数命名 (17) 4.7 枚举命名 (17) 4.8 宏命名 (18)

第五章杂项 (19)

文件修改记录

第一章原则 本文档的目的是提供一个公共的编码规范。 这个规范详细阐述在编码时要怎样写、不要怎样写,旨在提高代码的可读性、可维护性, 使代码易于管理,使所有人可以集中精力去实现内容,而非处理各种复杂的表现形式。 使代码易于管理的方法之一是增强代码一致性,让别人可以读懂你的代码是很重要的,保持统一编程风格意味着可以轻松根据模式匹配”规则推断各种符号的含义。创建通用的、 必需的习惯用语和模式可以使代码更加容易理解。虽然在某些情况下改变一些编程风格可能 会是好的选择,但我们还是应该遵循一致性原则,尽量不这样去做。 关键在于保持一致。

第二章排版 2.1 空行 【规则2-1-1】在每个函数、结构体、枚举定义结束之后都要加空行。 【规则2-1-2】在一个函数体内,逻辑密切相关的语句之间不加空行,其它地方应加空行分隔。 【规则2-1-3】相对独立的程序块之间、变量说明之后必须加空行。 不规范代码规范代码

c语言程序代码编写规范

C语言程序代码编写规范 (初级程序员讨论版) 前言 一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性。 说明 此文挡还在完善改进中,如有不足,欢迎指正。 本文档主要适用于刚刚开始接触编程的初学者。 对于具有一定工程项目开发经验的程序员,建议学习C语言程序代码编写规范 —高级版。 目录 1代码书写规范 2注释书写规范 3命名规范

内容 1 代码书写规范 函数定义 每个函数的定义和说明应该从第1列开始书写。函数名(包括参数表)和函数体的花括号(“{”和“}”)应该各占一行。在函数体结尾的括号(“}”)后面应该加上注释,注释中应该包括函数名,这样比较方便进行括号配对检查,也可以清晰地看出来函数是否结束。 范例1:函数的声明 void matMyFunction(int n) { …… } /* matMyFunction*/ 空格的使用 使用空格分割所有演算符号和操作数。 这条规则的例外是“->”,““.”, “()”和“[]”,这些操作符和操作数之间不空格。 当需要把一个程序行的内容分成几行写时,操作符号应该放在行末,而不是下一行的开头。 缩进的设置 代码书写应该遵从结构化的要求,采用缩进的格式。最小缩进量为4个空格,整个文件内部应该统一,不要混用Tab键和4个空格这两种情况,因为不同的编辑器对Tab键的处理方法不同。 折行的使用 每行的长度不要超过80个字符,当程序行太长时,应该分行书写。 分行时应该按照自然的逻辑关系进行,例如:不要把一个简单的逻辑判断写在 两行上。 分行后的缩进应该按照程序的逻辑关系进行对齐。例如:参数表折行后,下面 的行应该在参数表左括号的下方。 范例2:折行的格式

C语言编程规范标准

编码规 1. 头文件编码规 (2) 2. 函数编写规 (2) 3. 标识符命名与定义 (2) 3.1通用命名规则 (2) 3.2 变量命名规则 (3) 3.3函数命名规则 (3) 3.4 宏的命名规则 (3) 4. 变量 (3) 5. 宏、常量 (4) 6. 质量保证 (4) 7. 程序效率 (5) 8. 注释 (5) 9. 排版与格式 (6) 10. 表达式 (7) 11. 代码编辑、编译 (7) 12. 安全性 (7) 13. 可读性 (7) 14. 可测性 (7) 15. 单元测试 (8) 16. 可移植性 (8)

1. 头文件编码规 1. 禁止头文件循环依赖。 2. .c/.h文件不要包含用不到的头文件。 3. 禁止在头文件中定义变量。 4. 同一产品统一包含头文件排列方式。(如功能块排序、文件名升序、稳定度排序。) 5. 只能通过包含头文件的方式使用其他.c提供的接口,禁止在.c过extern的方式使用外部函数接口、变量。 2. 函数编写规 1. 一个函数仅完成一件功能。 2. 重复代码应该尽可能提炼成函数。 3.为简单功能编写函数 4.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。 5. 避免函数过长,新增函数不超过100行(非空非注释行)。 6. 避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过4层。 7. 可重入函数应避免使用全局变量和禁止使用static变量。 8. 设计高扇入,合理扇出(小于7)的函数。 9. 废弃代码(没有被调用的函数和变量)要及时注释(有助于更好理解程序)。 10. 对所调用函数的错误返回码要仔细、全面地处理。 11. 函数不变参数使用const。 12. 函数应避免使用全局变量、静态局部变量和I/O操作,不可避免的地方应集中使用。 13. 函数的参数个数不超过5个。 14. 减少或禁止函数本身或函数间的递归调用 3. 标识符命名与定义 3.1通用命名规则 1. 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。 2. 除了常见的通用缩写以外,不使用单词缩写,不得使用汉语拼音。 示例: argument 可缩写为arg buffer 可缩写为buff clock 可缩写为clk command 可缩写为cmd compare 可缩写为cmp configuration 可缩写为cfg device 可缩写为dev error 可缩写为err hexadecimal 可缩写为hex increment 可缩写为inc initialize 可缩写为init maximum 可缩写为max message 可缩写为msg minimum 可缩写为min parameter 可缩写为para

华为CC语言编程规范

百度文库- 让每个人平等地提升自我 目录 1 排版 (2) 4 可读性 (11) 6 函数、过程 (13) 7 可测性 (14)

1 排版 11-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 11-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 if (!valid_ni(ni)) { ... epssn_index; repssn_ni = ssn_data[index].ni; 应如下书写 if (!valid_ni(ni)) { ... epssn_index; repssn_ni = ssn_data[index].ni; 11-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。 示例: = NO7_TO_STAT_PERM_COUNT_LEN + STAT_SIZE_PER_FRAM * sizeof( _UL ); act_task_table[frame_id * STAT_TASK_CHECK_NUMBER + index].occupied = stat_poi[index].occupied; act_task_table[taskno].duration_true_or_false = SYS_get_sccp_statistic_state( stat_item );

report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER) && (n7stat_stat_item_valid (stat_item)) && (act_task_table[taskno].result_data != 0)); 11-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。 示例: if ((taskno < max_act_task_number) && (n7stat_stat_item_valid (stat_item))) { ... ord_length) && (j < ; i++, j++) { ... . tat_object), sizeof (_STAT_OBJECT)); n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER + index, stat_object ); 11-6:不允许把多个短语句写在一行中,即一行只写一条语句。 示例:如下例子不符合规范。 = 0; = 0; 应如下书写 = 0; = 0; 11-7:if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。

C语言编程规范V

C语言编程规范-V1.0 一、文件命名 1.文件主名以字母开头,由字母、数字或下划线组成 2.采用下列文件名后缀: .c(C程序文件) .h(头文件) .o(可重载目标文件) .a(静态库) .sl(动态库) 注:与特定编译器缺省后缀约定冲突的,遵循编译器的缺省后缀约定 3.编辑工具make的控制文件取名makefile 4.自述文件取名readme 二、源程序文件 1.源程序文件段落依照下列顺序: 序言 系统头文件引用(include) 用户头文件引用(include) 全局常量宏定义(define) 全局函数宏定义(define) 全局类型定义(typedef) 全局枚举类型定义(enums) 全局变量说明(extern) 全局变量说明(non-static) 全局变量说明(static) 函数(通常从最高层开始,按层次横向排列。如果定义较多的独立的公用函数,可以考虑按字母顺序排列) 2.序言内容应包括版权声明、文件名、内容描述、版本历史,格式如下:

/* * Copyright 2014,XXX Co., Ltd. All right reserved. * This program prints out messages from a queue. * Edit History: * 2014/11/28 - Created by GaoXuefeng. * 2014/11/29 - Modified by ChenChen to print output in the new form. */ 3.段落之间用空行分隔 4.文件长度尽可能在1000行之内 5.每行长度尽可能不要超过79列 三、头文件 1.用户头文件名避免使用系统头文件名 2.按照功能组织头文件,例如独立的子系统应单独一个头文件 3.与机器相关的说明组成单独头文件 4.多个源文件引用的说明放入头文件中 5.头文件不要嵌套 6.说明函数或外部变量的头文件应在定义该函数或变量的文件中引用 7.不要在头文件中定义变量 8.内部使用的宏、枚举、结构定义不应放入头文件中 9.内部使用的函数(相当于类的私有方法)声明不应放在头文件中 10.只引用需要的头文件 11.每个头文件采用下面的形式避免被重复引用: #ifndef EXAMPLE_H #define EXAMPLE_H ...... /* body of example.h file */

华为技术有限公司c语言编程规范

DKBA 华为技术有限公司内部技术规范 DKBA 2826-2011.5 C语言编程规范 2011年5月9日发布 2011年5月9日实施 华为技术有限公司 Huawei Technologies Co., Ltd. 版权所有侵权必究 All rights reserved

修订声明Revision declaration 本规范拟制与解释部门: 本规范的相关系列规范或文件: 相关国际规范或文件一致性: 替代或作废的其它规范或文件: 相关规范或文件的相互关系:

目录Table of Contents 0规范制订说明 (5) 0.1前言 (5) 0.2代码总体原则 (5) 0.3规范实施、解释 (6) 0.4术语定义 (6) 1头文件 (6) 2函数 (12) 3标识符命名与定义 (21) 3.1通用命名规则 (21) 3.2文件命名规则 (23) 3.3变量命名规则 (23) 3.4函数命名规则 (24) 3.5宏的命名规则 (24) 4变量 (25) 5宏、常量 (28) 6质量保证 (32) 7程序效率 (36) 8注释 (39) 9排版与格式 (44) 10表达式 (46) 11代码编辑、编译 (49) 12可测性 (50) 13安全性 (51) 13.1字符串操作安全 (51) 13.2整数安全 (52) 13.3格式化输出安全 (56) 13.4文件I/O安全 (57) 13.5其它 (59) 14单元测试 (59) 15可移植性 (60) 16业界编程规范 (60)

C语言编程规范 范围: 本规范适用于公司内使用C语言编码的所有软件。本规范自发布之日起生效,以后新编写的和修改的代码应遵守本规范。 简介: 本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C语言编程规范

第一章 C语言编程规范 C语言编程规范使用于所有的平台程序和应用程序开发。 C语言编程规范分为编程环境,命名规范,内容排列,书写格式,注释规范和程序修改等六部分内容。 具体格式参见《C头文件样本》和《C源程序样本》。 1.1编程环境。 包括目录及其权限设置,makefile使用两部分内容。 1.1.1目录设置。 进行C语言程序开发,一般设置如下六个目录。 各目录及其文件的权限一般使用系统确省,也可根据具体需要进行设置。 ●SRC:存放C源程序文件(*.c),数据库语言程序文件(如*.ec)。 ●INCL:存放C头文件(*.h)。 ●OBJ:存放目标文件(*.o)。 ●LIB:存放一般库文件(*.a),动态链接库文件(如*.so)。 ●BIN:存放可执行文件,SHELL文件。 ●BAK:源程序和头文件备份目录(以日期做文件后缀,如*.990806)。 1.1.2Makefile使用。 Makefile存放在SRC目录下,控制程序的编译与连接,库的生成与更新。 Makefile的定义内容和排列顺序为: ●编程环境目录宏定义。 ●C头文件搜索目录宏定义。 ●库文件搜索目录宏定义。 ●编译控制参数宏定义。 ●一般程序编译与连接方法。

●全部程序编译与连接列表。 ●复杂程序(多个.o)连接方法。 1.2命名规范。 包括源程序文件,头文件,目标文件,库文件,执行文件,宏定义,变量,结构,结构元素,函数等十类命名规范。 各类命名规范均基于《系统基本数据名称集》。 1.2.1源程序文件。 ●一般形式:AAABCCCC。不得超过8个字符。 ●AAA(2或3个字符):表示该源程序所属的系统(如btp,feb等)。 ●B:一般情况可省略。当多个源程序文件属于同一功能的分支程序,用来 表示源程序文件的功能类型(如m表示主程序,i表示输入,o表示输出等)。 ●CCCC:表示源程序的功能。 1.2.2头文件。 ●一般形式:AAACCCCC。不得超过8个字符。 ●AAA(2或3个字符):表示该头文件所属的系统(如btp,feb等)。 ●CCCCC:表示头文件的功能。 ●如头文件只被某一个源程序文件使用,名称应和源程序文件名称相同。 1.2.3目标文件。 ●一般的,应和源程序文件名称相同。 ●如和源程序文件名称不同,须得到主设计人员和部门主管同意。 1.2.4库文件。 ●库文件的名称一般在系统总体设计时即确定。 ●一般形式:libAAACCCC。 ●前三个字符一般固定为lib。 ●AAA(2或3个字符):表示该库文件所属的系统(如btp,feb等)。

c语言安全编码规范

竭诚为您提供优质文档/双击可除c语言安全编码规范 篇一:c语言编码规范 篇二:c语言代码规范 c语言代码规范 1.基本要求 1.1程序结构清析,简单易懂,单个函数的程序行数不得超过100行。 1.2打算干什么,要简单,直接了当,代码精简,避免垃圾程序。 1.3尽量使用标准库函数和公共函数。 1.4不要随意定义全局变量,尽量使用局部变量。 1.5使用括号以避免二义性。 2.可读性要求 2.1可读性第一,效率第二。 2.2保持注释与代码完全一致。 2.3每个源程序文件,都有文件头说明,说明规格见规范。 2.4每个函数,都有函数头说明,说明规格见规范。

2.5主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。 2.7常量定义(deFine)有相应说明。 2.8处理过程的每个阶段都有相关注释说明。 2.9在典型算法前都有注释。 2.10利用缩进来显示程序的逻辑结构,缩进量一致并以tab键为单位,定义tab为6个字节。 2.11循环、分支层次不要超过五层。 2.12注释可以与语句在同一行,也可以在上行。 2.13空行和空白字符也是一种特殊注释。 2.14一目了然的语句不加注释。 2.15注释的作用范围可以为:定义、引用、条件分支以及一段代码。 2.16注释行数(不包括程序头和函数头说明部份)应占总行数的1/5到1/3。 3.结构化要求 3.1禁止出现两条等价的支路。 3.2禁止goto语句。 3.3用iF语句来强调只执行两组语句中的一组。禁止elsegoto和elseRetuRn。 3.4用case实现多路分支。 3.5避免从循环引出多个出口。

3.6函数只有一个出口。 3.7不使用条件赋值语句。 3.8避免不必要的分支。 3.9不要轻易用条件分支去替换逻辑表达式。 4.正确性与容错性要求 4.1程序首先是正确,其次是优美 4.2无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。 4.3改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。 4.4所有变量在调用前必须被初始化。 4.5对所有的用户输入,必须进行合法性检查。 4.6不要比较浮点数的相等, 如:10.0*0.1==1.0,不可靠 4.7程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等。 4.8单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。 5.可重用性要求 5.1重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。 5.2公共控件或类应考虑oo思想,减少外界联系,考虑

编码规范(C语言)

编码规范(C语言)

1.引言 1.1简介 所有的程序开发手册都包含了各种规则。一些习惯自由程序的人(例如C程序员)可能对这些规则很不适应,但是在多个开发人员共同协作的情况下,这些规则是必需的。这不仅仅是为了开发效率,而且也为了测试和后期维护。 良好的编码习惯有助于标准化程序的结构和编码风格,使源代码对于自己和别人都易读和易懂。在开发周期中越早使用恰当的编码规定,将会最大程度的提高项目的生产率。良好的编码习惯除了代码格式,详细的注释外,还应该包括使用有助于提高程序效率的编码方式。 规范的开发有助于提高源码的可读性,可维护性,对于提高项目的整体效率更是不可缺少的(尤其是团队开发)。 1.2目的 本文是一套面向cprogrammer 和cdeveloper 进行开发所应遵循的开发规范。按照此规范来开发C 程序可带来以下益处: 码的编写保持一致性; 高代码的可读性和可维护性; 团队开发一个项目的情况下,程序员之间可代码共享; 于代码的回顾 2.命名规范 2.1文件命名规范 件名必须由前缀和后缀组成,最好采用长文件命名格式; 件名必须用英文字母表达,禁止使用中文; 于几个单词组合表达的文件名,每个单词必须小写,单词之间用下划线“_”分割; 文件后缀格式为.c,头文件后缀格式为:.h。 例:trade_rebuild.c,trade_rebuild.h 2.2 变量命名规范 命名必须具有一定的实际意义,形式为xAbcFgh。x 由变量类型确定,Abc、Fgh 表示连续意义字符串,如果连续意义字符串仅两个,可都大写,如OK。

表2-1 变量类型缩写表 环变量)。变量应为名词或名词短语。 2.3常量命名和宏定义规范 量和宏定义必须具有一定的实际意义; 量和宏定义在#include 和函数定义之间; 量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一条定义的右侧必须有一简单的注释,说明其作用。 例如: #define REPO_PRICE 1000000/*回购价格*/ 2.4函数命名规范 函数名用大写字母开头的单词组合而成,建议使用祈使动词或动词短语。例如: voidImportantPoint(void);

相关文档