77范文网 - 专业文章范例文档资料分享平台

C语言编码规范

来源:网络收集 时间:2020-05-19 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

C语言编码规范

1 范围

本标准规定了C语言的软件程序编码规范,适用于BSC软件部的应用软件、通用平台软件以及底层驱动软件,但用特殊的协议软件工具SDT生成的C代码可不遵守此规范。

2 命名

命名包括模块名、常量名、标号名、函数名等。这些名字应该能反映它所代表的实际意义,使其能够见名知义,有助于对程序功能的理解。

2.1 基本要求

2.1.1 格式

使用英文,用完整单词表示,尽量不采用缩写。 2.1.2 命名的长度

一般不要过长或过短。过长会增加工作量,过短则可能有命名冲突。函数命名、驱动中的宏命名不超过31个字母,其他命名不超过15个字母,如果超过考虑缩写或改名。如果缩写,要使用大家约定俗成的命名如msg、len、src等,以体现其原意。

在命名中使用缩写,一般采用下面三种方法: ? 抽取元音字母 task --> tsk user --> usr

? 取单词意义明显的头部 maximum --> max minimum --> min register --> reg

? 先用方法二后用方法一进行处理而得 temporary --> tmp remove --> rm

关于命名缩写,只有一个限制:如果缩写导致该名字的意义不明确,就不要使用它。 2.1.3 采用领域的规范名称

例如BSC、MAC等

2.2 常量、宏、枚举命名

全部用大写字母命名,在复合词里用下划线隔开每个词 例如

#define NON_ZERO 1 enum BoolEnums { BOOL_FALSE, BOOL_TRUE };

2.3 变量命名

2.3.1 全局变量以g为前缀,其后每个单词的第一个字母大写,不使用下划线

例如:

int gWindowHandle;

2.3.2 局部变量所有单词小写,并用下划线分割

例如: int timer_id char name_str[10];

2.3.3 结构体/联合体成员变量以名词或名词短语命名,每个单词的第一个字母大写,不使用下划线

例如:

typedef struct SystemData { int CurrentMid; int CurrentFid; int CurrentPid; } SystemDataType;

2.3.4 指针变量以ptr为后缀,风格与其角色一致,并且每行定义一个

例如

全局指针变量int* gListPtr 局部指针变量int* list_ptr; 数据结构成员变量int* ListPtr;

2.3.5 循环变量可采用i, j, k等不受上述规则限制

2.4 函数命名

2.4.1 文件内函数命名首个字母小写,其他单词第一个字母大写

例如

int createTimer();

2.4.2 文件间接口函数以小写单词命名,并用下划线隔开每个词

例如

int icp_f_code();

2.4.3 第一个单词尽量采用主动的动词

例如

void transfer_message();

2.5 类型命名

2.5.1 以模块名缩写(全部大写,用下划线分开)作为前缀,防止命名冲突

例如

struct BSC_SduSetupReq { };

2.5.2 自定义的类型以名词或名词短语命名,每个单词的第一个字母大写,不使用下划线。枚举类型

以复数结尾,结构体必须采用typedef方式定义,在类型名后加后缀Type,以示其为类型 例如

enum Days {SUNDAY, MONDAY, TUESDAY, … , SATURDAY}; typedef struct RouteTable {

} RouteTableType;

3 规则

3.1 基本原则

3.1.1 不允许把多个短语句写在一行中,即一行只写一条语句 3.1.2 每行不超出78个字符

3.1.3 嵌套的语句使用一个TAB缩进(定义为4个空格)

3.2 正确性与容错性要求

3.2.1 所有变量在调用前必须被初始化

3.2.2 对所有的外部输入,必须进行合法性检查,尤其是作为数组下标或指针偏移量的值 3.2.3 文件编译后不能有Warning

3.2.4 慎重使用强制类型转换,不同类型变量间赋值必须使用显式类型转换

例如 float f; int i; f = (float)i;

3.3 结构化要求

3.3.1 尽量不使用goto语句

3.3.2 尽量不使用条件表达式(?:)语句

3.3.3 避免从循环引出多个出口,小心使用continue和break 3.3.4 除了循环控制语句,不得使用逗号表达式 3.3.5 禁止使用超过两级的指针

3.3.6 一个模块的全局变量必须定义在一个结构体中,以与其他模块区分

3.3.7 do while尽量改成while类型,因do while把exit条件放到最后判断,有可能产生未及时判断

错误

3.4 大括号策略

3.4.1 左括号位于关键字的正下方,与上一行缩进保持一致 3.4.2 每个括号单独占一行,并且缩进保持一致

3.4.3 if, else if, else, while, do…while, for语句块必须使用{}括起语句块内保持相同的缩进

例如 if (condition) {

statement; } else {

statement; }

3.4.4 对于较大的代码块或多层嵌套,在右括号处应进行适当的注释

3.5 运算符

在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如>),后不应加空格。

采用这种松散方式编写代码的目的是使代码更加清晰。

由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格。如果语句已足够清晰,则括号内侧(即左括号后面和右括号前面)不需要加空格。多重括号间不必加空格,因为在C语言中括号已经是最清晰的标志了

示例

? if、for、while、switch等关键字与后面的括号间应加一个空格,括号内表达式和括号之间不加

空格。 例如 if (condition) while (condition)

? 函数名和括号之间不加空格 例如

printf(“Hello World\\n”);

? 逗号分号只在后面加一个空格 例如

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库C语言编码规范在线全文阅读。

C语言编码规范.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1053918.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: