先理解call和callback
通常我们写程序,是主动去调厂商或者其他人提供的API,这就是普通的API调用,翻译过来就是 call(我们主动)
那么如果是我们实现了函数的功能,但是需要厂商或者其他人来触发怎么办(我们被动)?比如检测设备状态变化,最好是有变化立即告诉我们才好,这时候回调函数就很理想了,返回过来就是callback
一个callback回调的例子
1 //回调函数的定义和实现 2 #include <stdio.h> 3 4 //函数只针对额格式为int(*CallBackFun)(char *p),即:返回值(指针名)(参数列表) 5 //为回调函数命名,类型命名为CallBackFun,参数为char *p 6 typedef int(*CallBackFun)(char *p); 7 8 //方法A,格式符合CallBackFun的格式,因此可以看做是一个CallBackFun 9 int A(char *p) 10 { 11 printf("-------A 回调打印传入参数 -------begin print:%s ",p); 12 return 0; 13 }
1 回调函数的调用和执行 2 #include "callback2.c" 3 4 //执行回调函数的函数 5 int call(char *p, int(*ptr)(char*)) //或者int call(char *p,int(*ptr)()) 6 { 7 (*ptr)(p); 8 return 0; 9 } 10 11 //main 函数 12 int main() 13 { 14 char *p = "回调函数,请打印字符 lllll"; 15 //call(p,A); //通过执行函数,调用回调函数 16 //(*A)(p); //也可以直接通过函数指针调用回调函数,不经过执行函数,简单高效 17 A(p); //这里就更简单了,直接调用回调函数,连函数指针都省了 18 19 return 0; 20 }