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

tibo

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

我在网上找不到关于为什么需要头文件的任何很好的解释。

我已经读过,包括头文件使您不再重复自己,这对我来说没有意义。头文件是实现的所有声明的重复,如果直接包含实现,则可以避免这种开销!!!

别误会,当您使用库时,我可以理解头文件的使用:几个项目可以只包含头文件,然后链接到相同的库(例如,标准库),从而以较小的可执行文件结尾。当您包含完全针对您的项目的内容时,我只是看不到头文件的好处...

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

乔纳森·勒夫勒(Jonathan Leffler)

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

因此,标头(通常)仅包含声明。相应源代码的目标代码以显式目标文件或库的形式与程序链接。这样可以避免出现多个定义错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么只能在头文件中实现模板?

为什么要链接文件而不是#include文件?

C:我们为什么要包含声明但未定义的头文件?

为什么要实现finalize()?

为什么C ++头文件不需要包含实现文件(.cpp)?

为什么头文件有单独的实现文件?(我的教授正确吗?)

在C ++中包括头文件(类定义和方法实现)

为什么标准库在.c文件而不是头文件中具有#include <...>

为什么Objective-C使用头文件而不是Java这样的单文件类?

Yocto:为什么要包括包装?

为什么我可以在头文件中实现类的成员函数?

为什么在头文件中定义函数会产生多个定义错误,而不是类?

春季:为什么我们要自动装配接口而不是实现的类?

为什么C ++需要单独的头文件?

为什么头文件不能互相包含?

Android的EventBus实现,为什么要反思

位域,为什么要具体实现?

为什么要实现IEquatable <T>接口

为什么要实现继承的抽象方法?

为什么要链接许多目标文件而不是一个大目标文件?

为什么要阻塞而不是循环?

为什么要调用__call而不是__callStatic

为什么要调用doGET而不是doPOST?

Js:为什么要轮班而不是推?

为什么要打印地址而不是值?

为什么要采用规范而不是apt?

为什么要双击而不是单击?

在实现(.cpp)文件中不包括相应的头文件(.h)仍可以编译吗?

为什么要删除具有随机模式而不是全0或1的文件?