帮助关于头文件在C中的位置

时间:2011-05-12 07:44:06

标签: c include header-files

  

可能重复:
  #include in .h or .c / .cpp ?

有人可以向我解释在另一个头文件中包含C头文件或在C中包含C源文件之间的区别吗?头文件的位置如何包含C语言中的影响代码?

3 个答案:

答案 0 :(得分:3)

最好不要在头文件中包含任何头文件,这些头文件对于函数的签名并不是绝对必需的(隐藏不必要的细节的形式)。

也就是说,头文件中包含的任何头文件也将包含在您的源文件中,因为源文件包含您的头文件(输入此内容会让人感到困惑:))。

答案 1 :(得分:1)

这可能不是一个容易回答的问题,因为它会影响您的代码设计并且可能会影响您的编译性能。

首先,按顺序读取头文件,因此在以下示例中first.h将在second.h之前读取。

#include "first.h"
#include "second.h"

这意味着,first.h中所述的任何定义也会在阅读second.h时定义。请考虑以下示例:

first.h中定义了以下内容:

#define SOME_VERY_IMPORTANT_DEFINE

现在,如果读取了second.h,请参阅以下代码:

#ifndef SOME_VERY_IMPORTANT_DEFINE
#include "third.h"
#endif

third.h将不会包含在您的代码中,因为SOME_VERY_IMPORTANT_DEFINE已定义且条件解析为false。

此外,头文件的包含是分层次的,因此头文件中包含的所有头文件也包含在包含头文件的源文件中。

这通常用于轻松启动库,而不必划伤您的头,您需要哪些标题,因为有一个标题包含所有其他标题。

我希望这有点帮助:)

答案 2 :(得分:1)

只需了解预处理器将头文件复制到源文件(如果包含),并且只编译源文件。