根据checkpatch.pl脚本“extern声明在.c文件之外” (用于检查补丁是否符合编码风格) 注意:这个在没有编译警告的情况下工作得很好 该问题可以通过在.h文件中放置extern声明来解决。extern声明为什么要在.c文件之外(按照linux编码风格)
a.c
-----
int x;
...
b.c
----
extern int x;
==> checkpatch抱怨
a.h
-----
extern int x;
a.c
----
int x;
b.c
----
#include "a.h"
==>不抱怨
我想知道为什么这是更好的
我的猜测。 理想情况下,代码被分割成文件以模块化代码(每个文件都是模块) 模块导出的接口放置在头文件中,以便其他模块(或.c文件)可以包含它们。所以如果任何模块想要在外部公开一些变量,那么必须在对应于该模块的头文件中添加一个extern声明。
同样,具有与每个模块(.c文件)相对应的头文件似乎对许多头文件具有 。
这不是那么多,因为头中的接口的实现可能会跨多个翻译单元进行拆分。 – StoryTeller 2013-02-08 11:46:44
*“我的Sepulation”*是正确的。而已。 – 2013-02-08 12:13:02