style(9) FreeBSD 内核开发人员手册
style - 内核源码文件风格指南

这个文件指定 FreeBSD 源码树中内核源码的推荐风格。同时也是推荐用户代码风格指南。许多风格规定隐含在例子中。在假设风格在问题前保持沉默,仔细检查例子???

/*
 * Style guide for FreeBSD.  Based on the CSRG's KNF (Kernel Normal Form).
 *
 *      @(#)style       1.14 (Berkeley) 4/28/95
 * $FreeBSD: releng/12.1/share/man/man9/style.9 333238 2018-05-04 03:23:45Z kevans $
 */

/*
 * *非常*重要的单行注释长这样。
 */

/* 更多单行注释长这样 */

/*
 * 多行注释长这样。
 * 写点真的句子。
 * 把注释填充的像真的段落一样。
 */

版权头应该是多行注释,第一行的注释中星号后面跟一个横杠,就像这样:

/*-
 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
 *
 * Copyright (c) 1984-2025 John Q. Public
 * All rights reserved.
 *
 * 又长,又无聊的协议放这里,Long, 但是为简介修剪过
 */

有一个脚本从树中收集所有第一行以 /*- 开始的所有注释,这种形式的协议信息。(后面先鸽着)

在版权头后面,放一个空白行,和 $FreeBSD$,对于非 C/C++ 语言源文件。版本控制系统 ID 标记应该只在文件中存在一次(不像这个文件)。非 C/C++ 源文件遵循上面的例子,C/C++ 源码遵循下面的例子。所有 VCS(version control system|版本控制系统) ??文件中???(咕咕咕)

/* From: @(#)style      1.14 (Berkeley) 4/28/95 */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: releng/12.1/share/man/man9/style.9 333238 2018-05-04 03:23:45Z kevans $");

在头文件前留一个空行。

包含顺序:

  1. 首先是内核包含文件 (sys/*.h)
  2. 如果 __FBSDID() 需要 sys/cdefs.h ,先包含这个。
  3. 如果需要 sys/types.h 或者 sys/param.h,在其他包含文件前包含它们。
  4. 剩余内核头文件应该以字母序排序。

(sys/param.h 包含 sys/types.h; 不要同时包含它们。)

#include <sys/types.h>  /* 非本地包含用尖括号 */
#include <sys/endian.h>
#include <sys/lock.h>
#include <sys/queue.h>

对于网络程序,接下来放置网络包含文件。

#include <net/if.h>
#include <net/if_dl.h>
#include <net/route.h>
#include <netinet/in.h>
#include <protocols/rwhod.h>

在内核中不要包含来自 /usr/include 的文件。

在下一组前留一个空行,/usr/include文件,应该按名字以字母序排序。

#include <stdio.h>

全局路径名定义在 <paths.h>。(咕咕咕)

#include <paths.h>

在本地包含文件前留一个空行。

#include "pathnames.h"          /* 本地包含用双引号 */

不要 #define 或者在实现命名空间定义名字,除非实现应用程序接口。

(全局·咕咕咕)

Last modification:May 10th, 2020 at 12:53 am
如果觉得我的文章对你有用,请随意赞赏