Linux内核编码风格

本文详细介绍了Linux内核的编码风格,包括空白字符、缩进、注释、标识符命名和函数定义等方面的规定。强调了注释的重要性,以及如何通过合理的命名和缩进来提高代码的可读性和维护性。此外,还特别提到了避免使用匈牙利命名法,并禁止使用汉语拼音作为标识符。
摘要由CSDN通过智能技术生成

空白字符的规定

  1. 关键字if、while、for与其后的控制表达式的(括号之间插入一个空格分隔,但括号内的表达式应紧贴括号。例如: while␣(1);
  2. 双目运算符的两侧各插入一个空格分隔,单目运算符和操作数之间不加空格,例如i␣=␣i␣+␣1、++i、!(i␣<␣1)、-x、&a[1]等。
  3. 后缀运算符和操作数之间也不加空格,例如取结构体成员s.a、函数调用foo(arg1)、取数组成员a[i]。
  4. ,号和;号之后要加空格,这是英文的书写习惯,例如for␣(i␣=␣1;␣i␣<␣10;␣i++)、foo(arg1,␣arg2)。
  5. 以上关于双目运算符和后缀运算符的规则并没有严格要求,有时候为了突出优先级也可以写得更紧凑一些,例如for␣(i=1;␣i<10;␣i++)、distance␣=␣sqrt(xx␣+␣yy)等。但是省略的空格一定不要误导了读代码的人,例如a||b␣&&␣c很容易让人理解成错误的优先级。
  6. 由于UNIX系统标准的字符终端是24行80列的,接近或大于80个字符的较长语句要折行写,折行后用空格和上面的表达式或参数对齐,例如:
    if␣(sqrt(xx␣+␣yy)␣>␣5.0
    &&␣x␣<␣0.0
    &&␣y␣>␣0.0)
  7. 较长的字符串可以断成多个字符串然后分行书写,例如:
    printf(“This is such a long sentence that "
    “it cannot be held within a line\n”);
    C编译器会自动把相邻的多个字符串接在一起,以上两个字符串相当于一个字符串"This is such a long sentence that it cannot be held within a line\n”。
  8. 有的人喜欢在变量定义语句中用Tab字符,使变量名对齐,这样看起来很美观。
    →int →a, b;
    →double →c;

缩进的规则

  1. 要用缩进体现出语句块的层次关系,使用Tab字符缩进,不能用空格代替Tab。在标准的字符终端上一个Tab看起来是8个空格的宽度,如果你的文本编辑器可以设置Tab的显示宽度是几个空格,建议也设成8,这样大的缩进使代码看起来非常清晰。如果有的行用空格做缩进,有的行用Tab做缩进,甚至空格和Tab混用,那么一旦改变了文本编辑器的Tab显示宽度就会看起来非常混乱,所以内核代码风格规定只能用Tab做缩进,不能用空格代替Tab。
  2. if/else、while、do/while、for、switch这些可以带语句块的语句,语句块的{或}应该和关键字写在同一行,用空格隔开,而不是单独占一行。例如应该这样写:
if(...){
   
       →语句列表
}elseif(...){
   
       →语句列表
}
  1. 函数定义的{和}单独占一行,这一点和语句块的规定不同,例如:
intfoo(int␣a,int␣b)
{
   
       →语句列表
}
  1. switch和语句块里的case、default对齐写,也就是说语句块里的case、default标号相对于switch不往里缩进,但标号下的语句要往里缩进。例如:
switch(c){
   case 'A':
      →       →语句列表
      →case 'B':
      →       →语句列表
      →default:
      →       →语句列表
      →}
  用于goto语句的自定义标号应该顶头写不缩进,而不管标号下的语句缩进到第几层。
  1. 代码中每个逻辑段落之间应该用一个空行分隔开。例如每个函数定义之间应该插入一个空行,头文件、全局变量定义和函数定义之间也应该插入空行,例如:
#include <stdio.h>
#include <stdlib.h>

int g;
double h;

int foo(void)
{
   
       →语句列表
}

int bar(int a)
{
   
       →语句列表
}

int main(void)
{
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值