头文件:告诉编译器如何调用某些功能(不知道该功能的实际工作方式)的文件称为头文件。它们包含函数原型。它们还包含与库一起使用的数据类型和常量。我们使用#include在程序中使用这些头文件。这些文件以.h扩展名结尾。
库:库是实现实际功能的地方,即它们包含函数主体。图书馆主要分为两类:
- 静止的
- 共享或动态
静态:静态库包含与最终用户应用程序链接的目标代码,然后它们成为可执行文件的一部分。这些库专门在编译时使用,这意味着当用户要编译其C或C++程序时,该库应位于正确的位置。在Windows中,它们以.lib扩展名结尾,对于MacOS以.a结尾。
共享的或动态的:仅在运行时才需要这些库,即,用户可以在不使用这些库的情况下编译其代码。简而言之,这些库在编译时被链接以解析未定义的引用,然后将其分发给应用程序,以便应用程序可以在运行时加载它。例如,当我们打开游戏文件夹时,我们可以找到许多.dll (动态链接库)文件。由于这些库可以被多个程序共享,因此也称为共享库。这些文件以.dll或.lib扩展名结尾。在Windows中,它们以.dll扩展名结尾。
示例: Math.h是一个头文件,其中包含诸如sqrt(),pow()等函数调用的原型,而libm.lib , libmmd.lib和libmmd.dll是其中的一些数学库。简单来说,头文件就像一张名片,而图书馆就像是一个真实的人,因此我们使用名片(头文件)来到达实际的人(图书馆)。
让我们以表格形式查看这两者之间的区别,以便可以轻松地进行比较:
Header Files | Library Files |
---|---|
They have the extension .h | They have the extension .lib |
They contain function declaration. | They contain function definations |
They are available inside “include sub directory” which itself is in Turbo compiler. | They are available inside “lib sub directory” which itself is in Turbo compiler. |
Header files are human readable.Since they are in the form of source code. | Library files are non human readable.Since they are in the form of machine code. |
Header files in our program are included by using a command #include which is internally handle by pre-processor. | Library files in our program are included in last stage by special software called as linker. |