回调函数(callback):回调函数就是在框架设计之初留下一个还未实现的接口,供后来人去实现(不实现也没事)。也可以理解在别人的函数中“插一脚”,有一种“你的过去我来不及参与,你的未来我奉陪到底”。 看代码的时候是不是总能看到api提供了一个注册函数,这个被封装,你是否好奇他是如何实现的?
回调函数是由函数指针来实现的,在看这个之前先要了解函数指针哦
int (*p[5])() = {NULL}; // 创建一个函数指针数组
int main(int argc, char * argv[]) // 这个一般情况时官方封装成一个库函数,上电就会一直运行,类似守护进程
{
register_hook_callback(test01);
register_hook_callback(test02);
while(1)
{
hook();
printf("=====运行========\n");
Sleep(1000);
}
}
int hook() // 官方封装起来
{
int i = 0;
for(i=0; i<5; i++)
{
if(p[i] != NULL)
{
p[i]();
}
}
}
int register_hook_callback(int (*p_callback)()) // 只是提供一个注册函数
{
int i = 0;
for(i=0; i<5; i++)
{
if(p[i] == NULL)
{
p[i] = p_callback;
break;
}
}
}
int test01() // 用户自己要添加的注册函数的函数
{
printf("\ntest01 callback\n");
}
int test02()
{
printf("\ntest02 callback\n");
}
test01 callback
test02 callback
=====运行========
test01 callback
test02 callback
=====运行========
相信有人注意到这个回调函数怎么无法传递参数呢!!! 0.0 还没研究到呢 过几天弄好了在分享一下,需要的关注下