Linux编码风格

Linux 有独特的编码风格,在内核源代码下存在一个文件Documentation/CodingStyle,进行了比较详细的描述。

Linux 程序的命名习惯和Windows 程序的命名习惯及著名的匈牙利命名法有很大的不同。

在Windows 程序中,习惯以如下方式命名宏、变量和函数:

#define PI 3.1415          // 用大写字母代表宏
int minValue, maxValue;    // 变量:第一个单词全部小写,后面单词的第一个字母大写
void SendData(void);       // 函数:所有单词第一个字母都大写

这种命名方式在程序员中非常盛行,意思表达清晰且避免了匈牙利法的臃肿,单词之间通过首字母大写来区分。通过第1 个单词的首字母是否大写可以区分名称属于变量还是属于函数,而看到整串的大写字母可以断定为宏。实际上,Windows 的命名习惯并非仅限于Windows 编程,许多领域的程序开发都遵照此习惯。

但是Linux 不以这种习惯命名,对于上面的一段程序,在Linux 中它会被命名为:

#define PI 3.1415
int min_value, max_value;
void send_data(void);

在上述命名方式中,下划线大行其道,不按照Windows 所采用的用首字母大写来区分单词的方式。Linux 的命名习惯与Windows 命名习惯各有千秋。

Linux 的代码缩进使用 “TAB”键。

Linux中代码括号 “{”和“}”的使用原则如下:

1. 对于结构体、if/for/while/switch语句, “{”不另起一行,例如:

struct var_data{
    int len;
    char data[0];
};

if(a == b){
    a = c;
    d =a ;
}

for(i = 0; i < 10; i++){
    a = c;
    d = a;
}

2. 如果if、for循环后面只有1行代码, 则可以不要加“{}”,例如:

for(i=0; i<10; i++){
    a=c;
}
应该改为:
for(i=0; i<10; i++)
    a=c;

3. if和else混用的时候, else语句不用另起一行, 例如:

if(x==y){
    ...
}else if(x>y){
    ...
}else{
    ...
}

4. 对于函数,“{” 需要另起一行, 例如:

int add(int a, int b)
{
    return a+b;
}

在switch/case 语句方面, Linux建议switch和case对齐, 例如:

switch(suffix){
case 'G':
case 'g':
    mem<<=30;
    break;
case 'M':
case 'm':
    mem<<=20;
    // fall through
default:
    break;
}

内核下的Documentation/CodingStyle 描述了Linux 内核对编码风格的要求,内核下的scripts/checkpatch.pl 提供了1 个检查代码风格的脚本。如果使用scripts/checkpatch.pl 检查包含如下代码块的源程序:

for(i=0; i<10; i++){
    a=c;
}

就会产生“WARNING: braces {} are not necessary for single statement blocks”的警告。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值