linuxC语言编程规范.docx
- 文档编号:23138456
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:25
- 大小:23.23KB
linuxC语言编程规范.docx
《linuxC语言编程规范.docx》由会员分享,可在线阅读,更多相关《linuxC语言编程规范.docx(25页珍藏版)》请在冰豆网上搜索。
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循环比较语句中后应跟一个空格
一元操作符前后不加空格
‘[]’_______、’.’、’->’前后不加空格
如:
好的空格使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linuxC 语言 编程 规范