使用头文件的最有效方法是什么

时间:2012-08-17 12:57:41

标签: c file header

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

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

然后我让项目中的每个C文件都包含这个“master”标题。在这个头文件中,我还包括每个C文件使用的头文件,因此每个C文件都有一个头文件;我们只需称它为master.h

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

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

3 个答案:

答案 0 :(得分:5)

  1. 没有包含其他头文件的头文件。让.c文件执行此操作 - 使编译更快。

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

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

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

答案 1 :(得分:0)

我建议不要使用master.h文件,因为整个项目最终过于紧密。每次更改master.h时,都需要重新编译所有源文件,这会显着降低构建过程的速度。相反,尝试使用相关功能创建.h个文件。 C库是一个很好的灵感:stdlib.hmath.h等。

要使用这些标头,您应该将它们包含在每个.c中,就像使用标准C标头一样:

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

至于链接,这是一个完全不同的主题。如果大多数功能都是内联的,则无需担心链接。否则,您应该在.c文件中定义它们,这些文件的名称与您的标题类似(例如,utils.cutils.h等。

答案 2 :(得分:0)

为所有.c文件创建一个头文件。将相似的函数分组到.c文件中。别忘了在每个头文件中添加标题保护。

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

#ifndef ONE_H
#define ONE_H

//give your function prototypes here.

#endif //ONE_H

标题后卫将有助于避免双重包含。