Linux内核代码风格摘要

第一章:缩进


制表符是8个字符

避免3级以上的缩进

在switch语句中switch与case对齐

不要把多个语句放在一行里

除了注释、文档和Kconfig之外,不要使用空格缩进

不要在行尾留空格


第二章:把长的行和字符串打散


每一行的长度限制是80列


第三章:大括号和空格的放置


起始大括号放在行尾,结束大括号放在行首(if、switch、for、while、do)

函数的起始大括号放置于下一行开头

只有一个单独语句的时候,不用加不必要的大括号


3.1:空格

(大多数)关键字后要加一个空格

不要在小括号里的表达式两侧加空格

“*”的首选方式是使之靠近变量名或者函数名

在大多数二元和三元操作符两侧使用一个空格

一元操作符后不加空格

前缀、后缀自加和自减一元操作符前后不加空格

“.”和“->”结构体成员操作符前后不加空格

不要在行尾留白


第四章:命名


使用简单的命名

全局变量需要有一个具描述性的名字

不要使用匈牙利命名法

本地变量名应该简短


第五章:Typedef


不要使用类似“vps_t”之类的东西


第六章:函数


函数应该简短而漂亮,并且只完成一件事情

本地变量的数量不应超过5-10个

使用空行隔开不同的函数

在函数原型中,包含函数名和它们的数据类型


第七章:集中的函数退出路径


使用goto语句做一些通用的清理工作


第八章:注释


注释告诉别人你的代码做了什么,而不是怎么做的

使用C89“/* ... */”风格

注释数据


第九章:你已经把事情弄糟了


使用“scripts/Lindent”


第十章:Kconfig配置文件


Documentation/kbuild/kconfig-language.txt


第十一章:数据结构


使用引用计数


第十二章:宏,枚举和RTL


定义常量的宏的名字及枚举里的标签需要大写

定义几个相关的常量时,最好用枚举

宏的名字请用大写字母,不过形如函数的宏的名字可以用小写字母

cpp手册

Gcc internals手册


第十三章:打印内核消息


保证信息简单、明了、无歧义

使用dev_err(),dev_warn(),dev_info()等

使用pr_debug()和pr_info()等


第十四章:内存分配


使用p = kmalloc(sizeof(*p), ...);

强制转换一个void指针的返回值是多余的


第十五章:内联弊病


如果一个函数有3行以上,就不要把它变成内联函数


第十六章:函数返回值及命名


如果函数的名字是一个动作或者强制性的命令,那么这个函数应该返回错误代码整数。

如果是一个判断,那么函数应该返回一个“成功”布尔值。

返回值是实际计算结果而不是计算是否成功的标志的函数不受此惯例的限制


第十七章:不要重新发明内核宏


使用头文件include/linux/kernel.h


第十八章:编辑器模式行和其他需要罗嗦的事情


不要覆盖别人的配置


附录 I:参考



The C Programming Language, 第二版, 作者Brian W. Kernighan和Denni
M. Ritchie. Prentice Hall, Inc., 1988. ISBN 0-13-110362-8 (软皮),
0-13-110370-9 (硬皮). URL: http://cm.bell-labs.com/cm/cs/cbook/


The Practice of Programming 作者Brian W. Kernighan和Rob Pike.  Addison-Wesley,
Inc., 1999.  ISBN 0-201-61586-X.  URL: http://cm.bell-labs.com/cm/cs/tpop/


cpp,gcc,gcc internals和indent的GNU手册——和K&R及本文相符合的部分,全部可以在
http://www.gnu.org/manual/找到


WG14是C语言的国际标准化工作组,URL: http://www.open-std.org/JTC1/SC22/WG14/


Kernel CodingStyle,作者greg@kroah.com发表于OLS 2002:
http://www.kroah.com/linux/talks/ols_2002_kernel_codingstyle_talk/html/


----


参考资料:Documentation/zh_CN/CodingStyle


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值