在使用之前,我们先百度搜索下关于“C 回调函数”的相关帖子,其中有几个帖子,可以提前先看下
https://www.cnblogs.com/jontian/p/5619641.html
http://www.runoob.com/cprogramming/c-fun-pointer-callback.html
https://blog.csdn.net/yidu_fanchen/article/details/80513359
https://segmentfault.com/a/1190000008293902
这些帖子看了之后要是理解了,基本回调使用就没问题了。
使用步骤:
1、确定函数指针是否带参和返回值,在H文件中声明如下:
// 以下分别是无返回值,无参/1个参数/2个参数
typedef void (*CallBack1)(void);
typedef void (*CallBack2)(unsigned char *pd);
typedef void (*CallBack3)(unsigned char *pd, unsigned char *dl);
// 以下分别是返回值为int类型,无参/1个参数/2个参数
typedef int (*CallBack4)(void);
typedef int (*CallBack5)(unsigned char *pd);
typedef int (*CallBack6)(unsigned char *pd, unsigned char *dl);
2、在H文件中声明加载回调的函数,如下:
void Set_Callback(CallBack2 fp,unsigned char *pi);
3、在C文件中定义函数指针,如下:
CallBack2 pointFun = null;
unsigned char *pdata =null;
4、编写Set_Callback函数,如下:
void Set_Callback(CallBack2 fp,unsigned char *pi)
{
pointFun = fp;
pdata = pi;
}
注:该函数用于上层装载上层应用函数指针使用的。
5、在系统执行回调函数中加入
pointFun(pdata)语句,来执行函数效果。
注:增加判断pointFun不为空,加强软件有效性执行。
6、在上层编码回调功能函数,如下
void app(unsigned char *pi)
{
printf("这是待回调的应用代码");
}
到此回调OK。