回调的本质:函数指针
实例1
#include <stdio.h>
//函数指针定义
//type (*paramName)()
// 实际执行函数
int callback1()
{
printf("callback1 function\n");
return 1;
}
// 回调的函数
// 函数指针作为函数参数
int handle(int(*callbackFun)())
{
printf("handle enter\n");
int ret = callbackFun();
printf("handle exit\n");
return ret;
}
int main()
{
handle(callback1);
return 0;
}
实例2
#include <stdio.h>
//函数中的context上下文,很重要到参数,规范的写法都会加上
//执行函数
//height: 参数
//context: 上下文
void onHeight(double height, void *context)
{
//1.2: 1-整数部分至少占用1位;.2-小数部分占用2位
printf("current height=%1.2f\n", height);
}
//函数原型==函数指针
//height: 参数
//context: 上下文
typedef void(*heightFun)(double height, void *context);
//回调函数
//fun: 函数指针
//context: 上下文
void registerHeight(heightFun fun, void* context)
{
double height = 120.234;
fun(height, context);
}
//
int main()
{
heightFun fun1 = onHeight;
registerHeight(fun1, NULL);
return 0;
}
|