底层通过函数指针调用上层函数
多文件中才有用 单文件可以模拟
比如
#include <stdio.h>typedef void (*pFuncCb) (int)//定义回调函数。
void callback1(int a)
{
printf("callback function1 is called and parameter = %d\n", a)//打印1
}
void callback2(int a)
{
printf("callback function2 is called and parameter = %d\n", a)//打印2
}
pFuncCb callback_function
void lowerFunc(int n)
{
int i
for(i = n i < n+10 i ++)
if(callback_function) callback_function(i)
}
int main()
{
callback_function = callback1
lowerFunc(1)// 会打印十次 打印1, 1到10
callback_function =NULL
lowerFunc(10)//没有打印。
callback_function = callback2
lowerFunc(100)// 会打印十次 打印2, 100到110
return 0
}
回调函数,顾名思义,也就是等该函数执行完了,会回去调用我们传进去的函数。用到回调函数的地方有不少,像我见过的:SQLite中的一个函数,sqlite_exec函数名有没有记错我没什么印象了。待这个函数执行完毕后,会去调用我传进去的一个函数,一般回调函数都是有自己的参数列表格式的,再利用这个格式从回调函数中获取到我们需要的一些值。