最近有好久没有写技术博客了,有种深深地罪恶感油然而生~~~
闲话少说啦,语言的编码风格是非常重要的,至少对于我来说,为代码排版、代码命名风格、文件组织架构等等真是操透了心(不要问谁是“透了心”)……曾经有一天,楞是为一个register变量名想了2个小时。。。
本文目的:主要讲述Linux编码风格
参考文章:《Linux设备驱动开发详解》(<- 不错的书)
1. 编码风格及命名习惯分类
根据书里描述,命名习惯分为:①Linux程序命名习惯②Windows程序命名习惯③匈牙利命名法
例:
Windows版
#define PI 3.1415926 /* 用大写字母代表宏 */
int minValue, maxValue; /* 变量:第一个单词全小写,其后单词的第一个字母大写 */
void SendData(void); /* 函数:所有单词第一个字母都大写 */
int minValue, maxValue; /* 变量:第一个单词全小写,其后单词的第一个字母大写 */
void SendData(void); /* 函数:所有单词第一个字母都大写 */
Linux版
#define PI 3.1415926
int min_value, max_value;
void send_data(void);
int min_value, max_value;
void send_data(void);
即:引出下面描述
2. Linux编码风格简述
1)Linux命名习惯:以下划线("_")分隔
2)Linux代码缩进:TAB缩进
3)对于结构体、if/for/while/switch语句,“{”不另起一行,如:
struct var_data {
int len;
char data[0];
};
4) 对于if/for后只有1行,不加“{”和“}”
5) if包含else时,else不另起一行,如:
if (x == y) {
...
} else if (x > y) {
...
} else {
...
}
6) 函数描述,“{”另起一行
7) 对于switch/case语句,switch和case对齐(和Xilinx SDK默认对齐方式一致)
一些参考:
内核代码文件:Documentation/CodingStyle
内核代码脚本:scripts/checkpatch.pl提供代码风格检查脚本