.h用于编译阶段的审核,如在math.h中有函数声明:
int abs(int);
但是在使用中写为
#include <math.h>
...abs(3,5);
编译器阶段就会检测出错误。
.dll用于运行阶段,如调用SetWindowText()函数等,需要在user32.dll中找到该函数。DLL可以简单认为是一种包含供别人调用的函数和资源的可执行文件。
.lib用于链接阶段,在链接各部分目标文件(通常为.obj)到可执行文件(通常为.exe)过程中,需要在.lib文件中查找动态调用函数(一般为DLL中的函数)的地址信息,此时需要在lib文件中查找,如查找SetWindowText()函数的地址偏移就需要查找user32.lib文件。(.lib也可用于静态链接的内嵌代码)
比如:
你已经在以前的工作中写好了一个专门用于串口通信的模块.那么你就可以把它生成一个LIB
文件.以后的项目还要用串口通信时,直接把LIB文件加入到工程中.不用再写代码.
当然,过一段时间你可能已经忘记了LIB文件中有那些函数和变量,这就是H文件做的事.
在H中把LIB中所有的变量和函数都说明出来,作个备忘.看H文件就知道LIB中有什么内容.
在其它模块中#INCLUDE H文件后就可调用LIB中的东西.
与现成的reg51.h,math.h,stdio.h一样.