1

因此,目前在我的编程中,我现在已经创建了相当多的函数并将其存储在单独的 C 文件中,我在项目之间经常使用这些函数。

我的问题是将它们实施到其他项目中的最简单、最有效的方法是什么?目前我只是为每个新项目制作一个头文件,其中包含我想要使用的所有自定义函数的函数原型。

然后我让项目中的每个 C 文件都包含这个“主”头文件。在这个头文件中,我还包含了每个 C 文件使用的头文件,因此每个 C 文件都有一个头文件;我们就叫它吧master.h

我觉得我这样做完全错了。我应该为每个 C 文件制作头文件并将它们包含在主头文件中吗?还是应该只为每个 C 文件创建头文件并根据需要包含它们?如果我这样做,一切如何仍然联系在一起?

在项目中使用头文件的最佳方法是什么?

4

3 回答 3

5
  1. 没有包含其他头文件的头文件。让.c文件这样做 - 使编译更快。

  2. 使用前向声明。使重新编译更快,因为它不需要打开其他文件,如果有任何简单的更改,该make命令将花费很长时间编译很多东西。

  3. .c如果它们在逻辑上适合在一起,则将函数在头文件和相应文件中组合在一起。对于静态库,链接器会挑选出适当的位。对于动态库,如果当前不在内存中,它们会在运行时加载(因此可以被其他二进制文件使用)。

  4. 没有master.h. 只需让库包含相关的函数(例如数学函数、输入/输出函数等)。各种项目可以选择“n”选择他们需要的东西。

于 2012-08-17T13:12:17.653 回答
0

我建议不要有一个master.h文件,因为你的整个项目最终会过于耦合。每次更改master.h所有源文件时都需要重新编译,这会显着减慢构建过程。相反,尝试创建.h具有相关功能的文件。C 库是一个很好的灵感来源:stdlib.hmath.h

为了使用这些头文件,您应该将它们包含在 each.c中,就像使用标准 C 头文件一样:

#include <math.h>
#include <stdio.h>

至于链接,这是一个完全不同的主题。如果您的大部分函数都是内联的,则您不必担心链接问题。否则,您应该在.c名称与您的标题类似的文件中定义它们(例如,utils.cforutils.h等)

于 2012-08-17T13:08:56.427 回答
0

为所有文件创建一个头.c文件。将类似的功能分组到一个.c文件中。不要忘记在每个头文件中添加头保护。

例如考虑一个头文件one.h,它应该包含以下标题保护。

#ifndef ONE_H
#define ONE_H

//give your function prototypes here.

#endif //ONE_H

标头保护将有助于避免双重包含。

于 2012-08-17T13:20:39.607 回答