【问题标题】:help about place of header file in C [duplicate]关于 C 中头文件位置的帮助 [重复]
【发布时间】:2011-08-23 21:50:45
【问题描述】:

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

谁能向我解释在另一个头文件中包含 C 头文件或在 C 中包含 C 源文件之间的区别?头文件的放置如何影响 C 语言中的代码?

【问题讨论】:

标签: c include header-files


【解决方案1】:

最好不要在头文件中包含任何你的函数签名不需要的头文件(一种隐藏不必要细节的形式)。

也就是说,你的头文件中包含的任何头文件也将包含在你的源文件中,因为源文件包含你的头文件(打字会让人感到困惑:))。

【讨论】:

    【解决方案2】:

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

    首先,头文件是顺序读取的,所以在下面的例子中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。

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

    这通常用于为库提供一个简单的开始,而无需费力地思考您需要哪些标头,因为有一个标头包含所有其他标头。

    我希望这会有所帮助:)

    【讨论】:

    • 谢谢你的帮助,你说的我明白了
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      相关资源
      最近更新 更多