头文件: 告诉编译器如何调用某些功能(不知道功能实际如何工作)的文件称为头文件。 它们包含函数原型。 它们还包含与库一起使用的数据类型和常量。 我们使用 #include
在程序中使用这些头文件。 这些文件以 .h
扩展名结尾。
库: 库是实现实际功能的地方,即它们包含函数体。库主要有两类:
- 静态库
- 共享或动态库
静态: 静态库包含与最终用户应用程序链接的目标代码,然后它们成为可执行文件的一部分。 这些库专门在编译时使用,这意味着当用户想要编译他/她的 C 或 C++ 程序时,库应该出现在正确的位置。 在 Windows 中,它们以 .lib
扩展名结尾,对于 MacOS 以 .a
结尾。
共享或动态: 这些库仅在运行时需要,即用户可以在不使用这些库的情况下编译他/她的代码。 简而言之,这些库在编译时链接以解析未定义的引用,然后将其分发给应用程序,以便应用程序可以在运行时加载它。例如,当打开游戏文件夹时,可以找到许多 .dll
(动态链接库)文件。 由于这些库可以被多个程序共享,它们也被称为共享库。这些文件以 .dll
或 .lib
扩展名结尾。 在 Windows 中,它们以 .dll
扩展名结尾。
示例: math.h
是一个头文件,其中包含诸如: sqrt()
、 pow()
等函数调用的原型,而 libm.lib
、 libmmd.lib
、 libmmd.dll
是一些数学库。 简单来说,头文件就像一张名片,库就像一个真实的人,所以使用名片(头文件)来访问真实的人(库)。
让我们以表格形式看看这两者之间的区别,以便可以轻松比较:
头文件 | 库文件 |
---|---|
扩展名为: .h | 扩展名为: .lib |
它们包含函数声明甚至宏。 | 它们包含函数定义 |
它们位于 Turbo 编译器中的“包含子目录”中。 | 它们位于 Turbo 编译器中的“lib 子目录”中。 |
头文件是人类可读的,因为它们是源代码的形式。 | 库文件是非人类可读的,因为它们是机器码的形式。 |
程序中的头文件是通过使用 #include 命令来包含的,该命令由预处理器在内部处理。 | 程序中的库文件被称为链接器的特殊软件包含在最后阶段。 |