C语言 | 头文件

本文译自The C Programming Language的4.5章节.

现在让我们考虑一下把刚刚编写的计算器程序拆分到几个源文件中, 因为以后每个功能的代码量会越来越多. 我们把主函数写在main.c; push, pop两个函数和其他变量放到stack.c里; getop放在getop.c. 最后把getchungetch写到第四个文件getch.c. 之所以把它们分散到不同的源文件中, 是因为他们在实际的工程项目里会被分别编译为库.

但是有一点要注意: 有些定义和声明同时被几个源文件引用. 我们需要尽可能的把它们集中在一起, 那么在后续的开发中我们只要维护好这个文件就可以了. 我们把这些需要共享的部分放在一个头文件calc.h里, 在需要它们的源文件里#include它. (#include 会在 4.11 章节讲述)

最终, 这个计算器程序看上去是这样的:

FN8LyF.png

这么一来, 要么每个源文件只能访问到它需要的信息, 要么有大量的头文件需要维护(在实际工程里这很困难). 权衡利弊,我们选择前者. 在一些中等规模的项目中, 最好的方法往往是通过单一的头文件来包括所有需要被共享的部分; 这也是我们在这里的做法. 在大型的程序中有更多的头文件, 项目结构也需要更加精心的设计.