http://www.kernel.org/doc/Documentation/CodingStyle
第一章:缩进
- 缩进8个字符
- 不使用3层以上的缩进
- switch的缩进:swithc和case对齐
- 不将多条语句放在同一行
第二章:
- 超过80个字符的语句要分行写
- 子语句永远短语上层语句
- 子语句靠右写
- 长字符串分成若干短字符串
第三章:括号和空格
- 函数的左右括号都在行首
- 非函数(if, switch, for, while, do)左括号写在语句后,右括号在行首。
- do-while和else例外:
- 只有一条语句的时候不用括号
- 但其中仅有某些分支有一条语句,其他分支有多条语句的情况除外
空格:
- 大多数关键字后留一个空格(if, switch, case, for, do, while)
- 某些关键字后不留空格(sizeof, typeof, alignof)
- 括号两侧不留空格
s = sizeof(struct file);
- 而不是
s = sizeof( struct file );
- 声明指针时,*靠近数据名或函数名而不是类型名
- 二元或三元操作符前后留有空格
= + - < > * / % | & ^ <= >= == != ? :
- 一元操作符不留空格
& * + - ~ ! sizeof typeof alignof __attribute__ defined
- 后缀加减之前和前缀加减之后(++,--)不留空格
- 结构成员操作符(.,->)前后不留空格
- 行末不留空格
第四章:命名
- 全局变量和全局函数必须使用描述性的名称,
如"count_active_users()" 而不使用 "cntusr()"
- 局部变量使用短小明确的变量名,如i或tmp
第五章: Typedefs
- struct, pointer等不使用typedef。
例:直接使用struct virtual_container *a;
第六章:函数
- 函数必须短小且只完成一件事,一到两个屏幕长(ISO/ANSI定义屏幕为80*24)
- 局部变量不超过5-10个
- 函数间留有一个空行,如果使用EXPORT*宏,它应该紧跟在函数后
第七章:适当的时候使用goto?
第八章:注释
- 只注释WHAT而不是HOW
- 使用C89的/*...*/而不是C99的//...
- 长注释使用的格式:
- 每个变量声明占一行(不在同一行用逗号隔开声明多个变量)留有注释空间。