根据 checkpatch.pl 脚本“extern 声明位于 .c 文件之外”(用于检查补丁是否符合编码风格) 注意:这完全可以正常工作,没有编译警告 通过将 extern 声明放在 .h 文件中解决了这个问题。
a.c
-----
int x;
...
b.c
----
extern int x;
==>检查补丁抱怨
a.h
-----
extern int x;
a.c
----
int x;
b.c
----
#include "a.h"
==> 不抱怨
我想了解为什么这更好
我的猜测。理想情况下,将代码拆分为文件,以便将代码模块化(每个文件都是一个模块) 将模块导出的接口放在头文件中,以便其他模块(或.c文件)可以包含它们。因此,如果任何模块想要在外部公开一些变量,则必须在与该模块对应的头文件中添加一个 extern 声明。
同样,拥有与每个模块(.c 文件)对应的头文件似乎有很多头文件。