头文件和库之间有什么区别?

我很难理解的一件事是编译器如何工作。我遇到了很多困难,但是特别是我一直把头文件和库混在一起。如果有人可以解决问题,那就太好了。



米脂
浏览 971回答 3
3回答

慕慕森

这样想(免责声明:这是一个非常高级的类比;)..该标题是您可以拨打一个电话号码,而...... 图书馆是您可以到达的真正的人!这是“接口”和“实现”之间的根本区别;在接口(头),告诉你如何调用一些功能(不知道它是如何工作),而实现(库)是实际的功能。注意:这个概念非常基础,因为它允许您灵活:您可以为不同的库使用相同的头(即,以相同的方式准确地调用功能),并且每个库都可以以不同的方式实现功能。通过保持相同的接口,可以更换库不改变你的代码。并且:您可以在不破坏调用代码的情况下更改库的实现!

精慕HU

甲头文件被通常用来定义一个接口或应用程序中设置的接口。可以将头文件视为显示程序外部功能的东西,而忽略技术实现细节。例如,如果您正在优化程序,则很可能会修改源(.cpp)文件以改进算法,但标头文件不会更改,因为外部客户端仍使用相同的参数集调用方法,并且返回值。在像C ++这样的面向对象的语言中,头文件通常包括以下内容:类描述和继承层次结构类数据成员和类型类方法尽管没有什么可以阻止在头文件中实现代码,但是通常不希望这样做,因为它会在代码中引入额外的耦合和依赖性。在某些情况下(例如模板类),出于技术原因,必须在头文件中定义实现。一个库是一个代码集合,你要提供一个程序或程序组。它包括执行特定的接口或一组接口。在库中定义了代码,以防止代码重复并鼓励重用。库可以是静态链接(.lib)或动态链接(.dll)的:甲静态链接库定义了一组然后被在生成过程中的连接阶段链接到最后的可执行文件(.exe)导出符号(其可以被认为是方法定义)的。它的优点是执行时间更快(因为不需要动态加载该库),而以较大的二进制文件为代价(因为方法本质上是在可执行文件中复制的)。甲动态链接库中的程序的执行,而不是节目的链接过程中连接。当多个程序需要重用相同的方法时,它很有用,并且在诸如COM之类的技术中得到了广泛的使用。

温温酱

可能使您感到困惑的一件事是,单词库在C ++中可能具有多种含义。这里已经充分讨论了一种含义:二进制文件中一组可链接的函数。这些可以静态链接也可以动态链接。但是还有另一种类型的库:所谓的仅标头库(包括STL,TR1和Boost的一部分)。这些不以单独的二进制形式存在,因此单词库不是指特定的二进制文件,而是指一组包含的头文件。希望这可以帮助。
打开App,查看更多内容
随时随地看视频慕课网APP