C编程 - 使用多个.h文件进行编译

时间:2014-11-09 16:54:00

标签: c compilation makefile

我是新编译的多个文件,我发现它很难掌握。

好的,假设我有一个party.c,我想从两个程序继承函数:decorations.c,food.c。

我了解到将#c文件包含在#include语句中是不好的做法,所以我创建了头文件并将它们添加到party.c:

#include "decorations.h"
#include "food.h"

现在,decorations.c包含以下内容:

#include "decoration.h"
#include "food.h"

而food.c有以下内容:

#include "food.h"

还有一件事。假设我有lights.c,其中包括:

#include "decorations.h"

我还需要在party.c中为party.c提供一个函数。我是否还要为lights.c创建头文件?我该如何编译?我怎么写我的makefile?或者在没有makefile的情况下编译它?

对不起,如果这真的很基本......

2 个答案:

答案 0 :(得分:2)

通常,您可以为可能相关的实现创建相关功能的头文件。

虽然每个头文件肯定有一个实现文件,但将头文件中声明的接口实现拆分为多个实现文件并不常见。

此外,除了公共头文件之外,对一组实现单元(或整个库)使用私有头是常见的,以改善封装。

接下来,主实现文件通常不提供(公共或私有)接口,因此没有标题,但只使用其他标题。

最后,您有责任并决定以任何有意义的方式对项目进行分区,这可能意味着根本没有多个文件。

正确分区/封装的优点是增加了可重用性,减少了耦合,加快了编译速度,使人们更容易理解。

答案 1 :(得分:0)

  

好的,假设我有一个party.c,我想从两个程序继承函数:decorations.c,food.c

基本上,你想在文件“party.c”中使用“decorations.c”和“food.c”中的函数吗?

我认为你应该将所有这些编译在一起。像这样:

gcc -ansi -Wall -pedantic party.c decorations.c food.c -o program

我假设您在头文件“decorations.h”,“food.h”中拥有所需的所有功能。如果没有,请创建具有缺少功能的另一个头文件。 我总觉得在.c文件中包含多个头文件是个坏主意。

希望这有帮助!