头文件:告诉编译器如何调用某些功能(不知道该功能实际如何工作)的文件称为头文件。它们包含函数原型。它们还包含与库一起使用的数据类型和常量。我们使用#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 and even macros. | They contain function definitions |
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. |