【问题标题】:C Programming - Compiling with multiple .h filesC 编程 - 使用多个 .h 文件进行编译
【发布时间】:2014-11-09 16:53:59
【问题描述】:

我是使用多个文件进行编译的新手,我发现它很难掌握。

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

我了解到在#include 语句中包含 .c 文件不是一个好习惯,因此我创建了头文件并将它们添加到 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"

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

如果这真的很基本,我很抱歉..

【问题讨论】:

  • 你有一个名为 party.c 的文件,它使用了文件 decors.c 和 food.c 中的函数,对吧?没有必要在 decors.c 和 food.c 源文件中都包含那些 .h 文件。您应该正常创建 decors.c 和 food.c,只包括您要使用的外部头文件。然后,在party.c 文件中,您将包含decoration.h 和food.h 头文件。请注意,头文件只是用于将源文件与另一个链接的文件。您只想将party.c 与其他文件链接。将文件链接到自身是没有意义的。

标签: c compilation makefile


【解决方案1】:

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

虽然每个头文件当然可以有一个实现文件,但将头文件中声明的接口的实现拆分为多个实现文件的情况并不少见。

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

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

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

适当的分区/封装的优点是增加了可重用性、减少了耦合、更快的编译以及使事情更容易被人类理解。

【讨论】:

    【解决方案2】:

    好的,假设我有一个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 文件中包含多个头文件是个坏主意。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      相关资源
      最近更新 更多