linuxC语言编程规范.docx

上传人:b****2 文档编号:119287 上传时间:2023-04-28 格式:DOCX 页数:25 大小:23.23KB
下载 相关 举报
linuxC语言编程规范.docx_第1页
第1页 / 共25页
linuxC语言编程规范.docx_第2页
第2页 / 共25页
linuxC语言编程规范.docx_第3页
第3页 / 共25页
linuxC语言编程规范.docx_第4页
第4页 / 共25页
linuxC语言编程规范.docx_第5页
第5页 / 共25页
linuxC语言编程规范.docx_第6页
第6页 / 共25页
linuxC语言编程规范.docx_第7页
第7页 / 共25页
linuxC语言编程规范.docx_第8页
第8页 / 共25页
linuxC语言编程规范.docx_第9页
第9页 / 共25页
linuxC语言编程规范.docx_第10页
第10页 / 共25页
linuxC语言编程规范.docx_第11页
第11页 / 共25页
linuxC语言编程规范.docx_第12页
第12页 / 共25页
linuxC语言编程规范.docx_第13页
第13页 / 共25页
linuxC语言编程规范.docx_第14页
第14页 / 共25页
linuxC语言编程规范.docx_第15页
第15页 / 共25页
linuxC语言编程规范.docx_第16页
第16页 / 共25页
linuxC语言编程规范.docx_第17页
第17页 / 共25页
linuxC语言编程规范.docx_第18页
第18页 / 共25页
linuxC语言编程规范.docx_第19页
第19页 / 共25页
linuxC语言编程规范.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

linuxC语言编程规范.docx

《linuxC语言编程规范.docx》由会员分享,可在线阅读,更多相关《linuxC语言编程规范.docx(25页珍藏版)》请在冰点文库上搜索。

linuxC语言编程规范.docx

linuxC语言编程规范

C语言编程规范

1序言.................................................................................................................................................5

1.1写作目标................................................................................................................................5

1.2适用范围................................................................................................................................5

1.3读者范围................................................................................................................................5

1.4参考资料................................................................................................................................5

1.5名词解释................................................................................................................................5

2可读性和可维护性..........................................................................................................................7

2.1命名规则................................................................................................................................7

2.1.1文件命名.........................................................................................................................7

2.1.2函数命名.........................................................................................................................7

2.1.3变量命名.........................................................................................................................7

2.1.4数据类型命名.................................................................................................................8

2.1.5宏定义和枚举的取值.....................................................................................................9

2.1.6标准宏定义...................................................................................................................10

2.2空白的填充...........................................................................................................................10

2.2.1空白行分割规则...........................................................................................................10

2.2.2空格分割规则...............................................................................................................10

2.2.3缩进规则.......................................................................................................................11

2.3注释规则...............................................................................................................................11

3文件的组织...................................................................................................................................13

3.1源文件组织...........................................................................................................................13

3.1.1文件头...........................................................................................................................13

3.1.2头文件的包含...............................................................................................................14

3.1.3常量、宏、Typedefs的定义........................................................................................14

3.1.4全局、静态变量的定义...............................................................................................14

3.1.5静态函数类型的声明...................................................................................................15

3.1.6函数体的排列顺序.......................................................................................................15

3.2头文件组织

...........................................................................................................................15

3.2.1文件头...........................................................................................................................15

3.2.2防止头文件的嵌套包含...............................................................................................16

3.2.3适应C++规则的声明方法..........................................................................................16

3.2.4常量、宏、Typedefs的定义........................................................................................16

3.2.5变量、函数的声明.......................................................................................................16

4函数的组织...................................................................................................................................17

4.1函数头的格式.......................................................................................................................17

4.2函数类型的定义...................................................................................................................18

4.3变量的定义...........................................................................................................................18

5一般语法描述...............................................................................................................................19

5.1条件判断语句.......................................................................................................................19

5.2分支语句...............................................................................................................................20

5.3无条件跳转语句...................................................................................................................20

5.4表达式..................................................................................................................................20

5.5结构......................................................................................................................................21

6附录...............................................................................................................................................22

6.1C源文件示例:

....................................................................................................................22

6.2H头文件示例:

....................................................................................................................22

1序言

1.1写作目标

文档所包含的编码规范是在中、大规模的软件开发项目中实际使用过的。

撰写这份文档的目的是为了在软件开发工作中具有相同格式的统一规范。

这份规范的执行将大大提高代码的可维护性、完整性、可移植性、可读性。

1.2适用范围

这份文档指明了公司内部所有软件项目的代码开发框架。

文档仅仅适用于使用C语言的软件开发工作中。

在读本文档之前读者应具备相当熟练C语言开发的工作经验,以至于读者看本文档时不需要任何额外的C语言知识。

本文档提供下列内容:

􀁺C文件及函数的组织内容。

􀁺变量、数据类型、函数的命名规范。

􀁺结构、变量的分布、注释书写方法。

􀁺提高C语言代码的可读性及编码效率。

1.3读者范围

这份编码规范适用于所有在IPTV软件部工作的软件设计工作者、软件开发工作者。

1.4参考资料

下面列出的是一些相关的参考文档:

􀁺TheCProgrammingLanguage:

ANSICVersion,BrianW.Kernighan,DennisM.Ritchie,

PrenticeHall,1988.

1.5名词解释

codingstandards编码规范

Namingconventions命名规则

comments注释

fileorganization文件组织

functionorganization函数组织

APIApplicationProgramInterface,应用程序接口

EnumEnumerator,枚举

ConstintConstantInteger,整形常量

CVSConcurrentVersionsSystem(11),一种源代码版本控制软件

2可读性和可维护性

这个章节描述了增强C源代码的可读性和可维护性的方法。

内容包括:

􀁺不同类型变量、宏、数据类型、文件、函数的命名差异

􀁺空白的填充

􀁺注释书写方法

2.1命名规则

文件、函数、常量、变量的命名应当采用有意义的名称定义,只有这样才能提高可读性。

面将列出一般的命名方法:

􀁺选择唯一的并且能够准确、明了的表示出变量用途的名称。

􀁺单词之间使用下划线符号连接。

􀁺避免使用容易引起歧意的名称缩写。

例如:

缩写“inch”有可能会被误认为“input

character”,所以如果要表示“inputcharacter”,则使用in_char的缩写会比较好些。

􀁺必须保证所使用名称的唯一性,而不要试图依赖字母大小写来区别不同的名称。

􀁺不允许变量名和typedef使用相同的名称,这样将引起不必要的混淆。

2.1.1文件命名

文件名采用MS-DOS的8.3短文件名格式,且所有字符均为小写。

C和H文件的扩展名分

别为*.c和*.h。

为文件命名时应尽量保证整个工程中的唯一性,应使用其所属’模块名_’作为

前缀(模块名的长度不超过2至4个字符)。

如:

oam_alarm.c

bri_extn.h

2.1.2函数命名

􀁺所有函数名称均采用大小写字符,单词间以大写字母区分。

􀁺为全局函数或API命名时,应使用其所属’模块名_’作为前缀(模块名的长度不超过2

至4个字符)。

如:

U16HIP_GetSlotInfo(void);/*globalHIPAPIfunction*/

􀁺为静态函数(如:

staticfunctions)命名时,应在该函数类型声明前使用static关键字。

如:

staticU8GetNumOfBrds(void);/*staticfunction*/

2.1.3变量命名

下面所列出的是不同类型变量的命名规则:

􀁺变量全部采用小写类型缩写+大小写字母命名方式,单词间以大写字母区分。

如:

ucLowerCase。

􀁺指针变量类型缩写前要+’p’,多级指针变量前+’p’的个数与指针级数对应;函数指针变

量前要+’pf’。

如:

void*pVoid;

U8**ppcValue;

􀁺变量类型缩写如下

Arraya

Ponitp

U8uc

S8c

U16us

S16s

U32ul

S32l

BOOLb

structst

unionu

enume

􀁺为全局变量命名时,应使用’g_’作为前缀。

如:

g_sLowerCase。

􀁺为静态变量命名时,应使用’s_’作为前缀,并以static关键字修饰。

如:

staticU8*s_plLowerCase;

注意:

全局变量不要被外部模块之间访问,应该通过函数方式进行存取控制,所有之间访问全

局变量的代码均被视为不良代码。

2.1.4数据类型命名

这里主要描述typedef和enum两种类型的命名规则。

􀁺下面所列的是基本数据类型。

如果需要另外扩充数据类型,则应在这些基本数据类型基

础上进行。

至于StandardC保留的数据类型我们将不使用。

如:

char,int,short,long

U8unsigned8-bit

S8signed8-bit

U16unsigned16-bit

S16signed16-bit

U32unsigned32-bit

S32signed32-bit

BOOLBoolean

注意:

BOOL类型是新增的数据类型,采用typedefU32的格式定义的。

所有上面定义的数据类型都应在具体项目中的一个全局性的公共头文件中定义。

􀁺所有使用typedef形式定义的struct数据结构名称将使用’T’(或’PT’指针类型)作为前缀。

如:

typedefstruct

{

U8b;

}TName,*PTName;

􀁺所有使用typedef形式定义的union数据结构名称将使用’U’作为前缀。

如:

typedefunion

{

U8b;

U16a;

}UName;

􀁺所有使用typedef形式定义的enum数据结构名称将使用’E’作为前缀。

如:

typedefenum

{

FM_INVALID_CODE,

FM_INVALID_SLOT_ID,

}EName;

􀁺所有使用typedef形式定义的函数指针名称将使用’PF’作为前缀。

如:

Typedefvoid(*PFTaskEnty)(void);

2.1.5宏定义和枚举的取值

􀁺所有宏名,const变量名和enum方式定义的常量名均采用大写字符,单词间以’_’区分

􀁺预编译宏定义前+’_’;

􀁺尽量避免直接使用数字常量(硬编码),取而代之的是用宏(#define),const和enum方

式定义常量值。

如:

#defineSLOT1

constU16MAX_SLOT_NUMBER=16

enum

{

RV_OK,

RV_NO_MEM,

RV_TIMEOUT,

};

注意:

1).避免在不同文件中使用相同的常量名。

全局常量应声明在全局的公共头文件中。

2).首选使用const类型定义替代宏定义。

因为const类型定义将有利于编译器进行类型

检查。

2.1.6标准宏定义

标准宏定义(如:

TRUE/FALSE,SUCCESS/FAILURE等)应该定义在全局的系统头文件中。

这些宏的具体值为:

#defineTRUE1

#defineFALSE0

#defineOK1

#defineNG0

#defineSUCCESS0

#defineFAILURE-1

2.2空白的填充

2.2.1空白行分割规则

空白行的使用可以增加源代码中的可读性,但过多的使用会造成源代码冗长可读性下降。

种比较好的方法是使用空白行分割源代码中的不同部分和相对独立的程序块。

如:

#defineLOWER0

#defineUPPER300

#defineSTEP10

/*此处增加一行空白*/

voidmain(void)

{

U8x;

/*此处增加一行空白*/

/*打印字符串处理部分*/

/*此处增加一行空白*/

for(..;..;..)

{

printf(…);

}

}/*endofMAIN*/

2.2.2空格分割规则

􀁺if,while,for关键词后加一个空格

如:

while

(1)

􀁺二元操作符前后加一个空格

如:

wCount+=GAP;

􀁺逗号后应跟一个空格

如:

concat(s1,s2);

􀁺‘(’后不加空格

􀁺‘)’、’,’、’;’前不加空格;但当‘;’在for循环比较语句中后应跟一个空格

􀁺一元操作符前后不加空格

􀁺‘[]’_______、’.’、’->’前后不加空格

如:

好的空格使

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

当前位置:首页 > 人文社科

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2