【发布时间】:2011-08-23 21:50:45
【问题描述】:
【问题讨论】:
-
欢迎来到 StackOverflow! 请在提问之前搜索是否已被提问/回答。谢谢!问候。
标签: c include header-files
【问题讨论】:
标签: c include header-files
最好不要在头文件中包含任何你的函数签名不需要的头文件(一种隐藏不必要细节的形式)。
也就是说,你的头文件中包含的任何头文件也将包含在你的源文件中,因为源文件包含你的头文件(打字会让人感到困惑:))。
【讨论】:
这可能不是一个容易回答的问题,因为它会影响您的代码设计并可能影响您的编译性能。
首先,头文件是顺序读取的,所以在下面的例子中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。
此外,头文件的包含是分层的,因此头文件中包含的所有头也包含在包含该头的源文件中。
这通常用于为库提供一个简单的开始,而无需费力地思考您需要哪些标头,因为有一个标头包含所有其他标头。
我希望这会有所帮助:)
【讨论】:
只需了解预处理器会将标头复制到源文件(如果包含),并且仅编译源文件。
【讨论】: