为什么要包含头文件而不是实现?

时间:2014-11-24 00:45:17

标签: c c11

在我可以在网上找到的大多数教程中,我注意到每个人都在为所有内容创建头文件而且从不包含.c文件。

我无法在网上找到有关您需要头文件的原因的任何好解释。

我已经读过,包括头文件允许你不要重复自己,这对我没有意义。头文件是你实现的所有声明的重复,如果你直接包含你的实现,那么你就可以避免这种开销!?!

不要误会我的意思,当你做库时,我可以理解头文件的使用:几个项目只能包含头文件,然后链接到同一个库(例如标准库),最终结束使用较小的可执行文件当你包含一些完全特定于你的项目的东西时,我只是看不到头文件的好处......

你能解释一下头文件的真正好处吗?

1 个答案:

答案 0 :(得分:2)

假设您有一个由10个源文件构建的程序。如果每个代码都包含了所需的所有代码(包括,可能是它使用的标准C库函数的实现),那么当你将所有的位链接在一起时,你会有很多很多的定义错误。

因此,标题(通常)仅包含声明。相应源代码的目标代码与程序链接,可以是显式目标文件,也可以是库。这可以阻止您获得多个定义错误。