Linux编程规范(试行)
Linux 编程规范
总纲
本手册的目的是为了规范编程习惯,本文提到的所有规则都是为了保证最终代码的易
读、易懂、易维护性等。
若出现文档中未提及的情况,需按照K&R 风格处理。
第一章 文件结构
第一条 用#include 格式来引用标准库的头文件。
第二条 用#include “filename.h”格式来引用非标准库的头文件。
第三条 自定义头文件中,要用#ifndef/#define/#endif 结构产生预处理块防止重复包含,并
且与#else 和#endif 对应的宏名要标记完整。
驱动程序及内核态程序如下所示:
#ifndef __JZ47XX_H__
#else /* __JZ47XX _H__ */
#endif /* Define __JZ47XX _H__ */
应用程序如下所示:
#ifndef JZ47XX_H
#else /* JZ47XX _H */
#endif /* Define JZ47XX _H */
第四条 头文件中不宜出现类似extern unsigned int reg_addr 的声明和变量定义。
第五条 应用程序单个.c 文件长度控制在500 行左右。
第六条 文件头的格式如下:
/*
* Copyright (c) Ingenic Semiconductor Co., Ltd.
*/
第二章 程序的版式
第一条 包含不同级别的头文件要用空行分割。
例如:
#include
#include
#include
#include “example.h”
第二条 每个函数定义结束之后都要加空行。
第三条 在一个函数体内,逻辑上密切相关的语句之间不加空行,其他地方加空行分隔。
第四条 缩进方式为一个TAB ,每个TAB 占用长度为八个字符,缩进级数不超过三级。
第五条 不要在同一行里放多个语句(包括赋值语句),不要在行尾留空格。
第六条 if、for、while 、do 等语句自占一行,执行语句不得紧跟其后。
第七条 关键字if, switch, case, for, do, while 等之后要加一个空格。函数名之后不要留空格,
紧跟左括号‘(’,以与关键字区别。‘(’向后紧跟,‘)’、 ‘,’、 ‘;’向前紧跟,
紧跟处不留空格。
在括号表达式内,不要在括号旁加空格。
比如:
s = sizeof(struct file);
不要写成
s = sizeof( struct file ); /* bad */
第八条 赋值操作符、比较操作符、算术操作符、逻辑运算符、位域操作符等二元操作符的
前后应当加空格。
第九条 一元操作符如“!”、 “~”,“++”、”--“等前后不加空格。
第十条 象“[] “、“.”、“->”这类操作符前后不加空格。
第十一条 代码行最大长度宜控制在70 至80 个字符以内。长度超过80 列的语句可以分
成几个有意义的片段,每个片段要明显短于原来的语句,并且放的位置也要明显的
靠右。
第十二条 花括号的位置采用K&R 风格,非函数语句块中(除函数定义外)起始大括号
放在行尾,结束大括号放在行首。结束大括号应独自占据一行,除非它后面跟着同
一个语句的剩余部分。如果执行体只有一条语句也必须加上{} ,方便后来调试程序
的人加打印。
第十三条 长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首。
第十四条 代码中需添加适量注释,应尽可能采用C89 注释风格/* */ 。注释应当准确、易
懂,保证注释和代码的一致性。
第十五条 代码应当在经常会被使用者修改的地方做明显的标记,并