OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3376|回复: 0

【分享-信盈达】Linux内核编码风格5!

[复制链接]

13

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2012-10-7
在线时间
1 小时
发表于 2014-7-6 10:06:13 | 显示全部楼层 |阅读模式

 

 第八章:注释

 

注释是好的,不过有过度注释的危险。永远不要在注释里解释你的代码是如何运作的:更好的做法是让别人一看你的代码就可以明白,解释写的很差的代码是浪费时间。

一般的,你想要你的注释告诉别人你的代码做了什么,而不是怎么做的。也请你不要把注释放在一个函数体内部:如果函数复杂到你需要独立的注释其中的一部分,你很可能需要回到第六章看一看。你可以做一些小注释来注明或警告某些很聪明(或者槽糕)的做法,但不要加太多。你应该做的,是把注释放在函数的头部,告诉人们它做了什么,也可以加上它做这些事情的原因。

 

当注释内核API函数时,请使用kernel-doc格式。请看

Documentation/kernel-doc-nano-HOWTO.txtscripts/kernel-doc以获得详细信息。

 

Linux的注释风格是C89/* ... */”风格。不要使用C99风格“// ...”注释。

 

长(多行)的首选注释风格是:

 

        /*

         * This is the preferred style for multi-line

         * comments in the Linux kernel source code.

         * Please use it consistently.

         *

         * Description:  A column of asterisks on the left side,

         * with beginning and ending almost-blank lines.

         */

 

注释数据也是很重要的,不管是基本类型还是衍生类型。为了方便实现这一点,每一行应只声明一个数据(不要使用逗号来一次声明多个数据)。这样你就有空间来为每个数据写一段小注释来解释它们的用途了。

 

 

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

 

这没什么,我们都是这样。可能你的使用了很长时间Unix的朋友已经告诉你“GNU emacs”能自动帮你格式化C源代码,而且你也注意到了,确实是这样,不过它所使用的默认值和我们想要的相去甚远(实际上,甚至比随机打的还要差——无数个猴子在GNU emacs里打字永远不会创造出一个好程序)(译注:请参考Infinite Monkey Theorem

 

所以你要么放弃GNU emacs,要么改变它让它使用更合理的设定。要采用后一个方案,你可以把下面这段粘贴到你的.emacs文件里。

 

(defun linux-c-mode ()

  "C mode with adjusted defaults for use with the Linux kernel."

  (interactive)

  (c-mode)

  (c-set-style "K&R")

  (setq tab-width 8)

  (setq indent-tabs-mode t)

  (setq c-basic-offset 8))

 

这样就定义了M-x linux-c-mode命令。当你hack一个模块的时候,如果你把字符串

-*- linux-c -*-放在头两行的某个位置,这个模式将会被自动调用。如果你希望在你修改

/usr/src/linux里的文件时魔术般自动打开linux-c-mode的话,你也可能需要添加

 

(setq auto-mode-alist (cons '("/usr/src/linux.*/.*\\.[ch]$" . linux-c-mode)

                        auto-mode-alist))

 

到你的.emacs文件里。

 

不过就算你尝试让emacs正确的格式化代码失败了,也并不意味着你失去了一切:还可以用“indent”。

 

不过,GNU indent也有和GNU emacs一样有问题的设定,所以你需要给它一些命令选项。不过,这还不算太糟糕,因为就算是GNU indent的作者也认同K&R的权威性(GNU的人并不是坏人,他们只是在这个问题上被严重的误导了),所以你只要给indent指定选项“- kr -i8”(代表“K&R8个字符缩进”),或者使用“scripts/Lindent”,这样就可以以最时髦的方式缩进源代码。“indent”有很多选项,特别是重新格式化注释的时候,你可能需要看一下它的手册页。不过记住:“indent”不能修正坏的编程习惯。

嵌入式解决方案提供 嵌入式人才实训
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 10:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表