有人可以向我解释在另一个头文件中包含C头文件或在C中包含C源文件之间的区别吗?头文件的位置如何包含C语言中的影响代码?
答案 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)
只需了解预处理器将头文件复制到源文件(如果包含),并且只编译源文件。