prev up next   top/contents search

comp.lang.c FAQ 列表· 第 10.6 题

我第一次将一个程序分成多个源文件,我想知道什么应该放在.c文件中放入什么,又该在.h文件中放入什么。(“.h” 到底是什么意思?)


一般来说,你应该将这些东西放在头(.h)文件中

macro definitions (preprocessor #defines)
structure, union, and enumeration declarations
typedef declarations
external function declarations (see also question 1.11)
global variable declarations

当一个声明或定义需要被多个其他文件共享时,将其放在头文件中尤其重要。不要在两个或多个源文件的顶部重复声明或宏定义;而是将其放在一个头文件中,并在需要的地方#include它。原因不仅仅是为了少打字:你希望能够在一个地方修改声明或定义,然后一致地更新到所有源文件。(特别地,永远不要将外部函数原型放在.c文件中。参见问题 1.7。)

另一方面,当一个定义或声明应该只对一个.c文件私有时,将其保留在那里是可以的。(私有的文件作用域函数和变量也应该这样声明静态。参见问题 2.4。)

最后,你不应该将实际代码(即函数体)或全局变量定义(即定义或初始化实例)放在头文件中。另外,当你用多个源文件构建一个项目时,你应该分别编译它们(使用编译选项只进行编译),然后使用链接器将产生的对象文件链接在一起。(在一个集成开发环境中,所有这些都可能已经为你处理好了。)不要试图用#include来“链接”你所有的源文件;#include指令应该用来引入头文件,而不是其他.c文件。

参见问题 1.710.717.2

其他链接:更多解释

参考:K&R2 Sec. 4.5 pp. 81-2
H&S Sec. 9.2.3 p. 267
CT&P Sec. 4.6 pp. 66-7


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管