Linux下C语言实现回调函数的例子

  先理解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 回调打印传入参数 \n-------begin print:%s\n",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 }

猜你喜欢

转载自www.cnblogs.com/jieliujas/p/12202025.html