C语言之struct回调函数(七十)
创始人
2025-05-28 10:51:32
0
  1. 回调函数本质
1.回调函数:本质是通过定义一个函数指针,来指向一个的函数。当调用这个函数指针(可以作为参数传递)的时候,其实调用的是指向的真正的函数实现,这就是回调函数。2.struct的回调函数使代码更清晰明了。

  1. 程序例子
<1>.struct callback普通用法
#include 
#include 
#include 
#define MPH_MAX  10typedef void (*CharHook)(char *self);
typedef void (*IntHook)(int cout);void real_fun1(char *name){printf("xxx-------->%s(), line = %d, name = %s\n",__FUNCTION__,__LINE__,name);
}void real_fun2(int cout){printf("xxx-------->%s(), line = %d, cout = %d\n",__FUNCTION__,__LINE__,cout);
}//way01:
struct fun_ops{ //定义回调函数structvoid (*fun1)(char *self); //注册参数void (*fun2)(int cout);
};fun_ops fuops = {//初始化函数指针的函数.fun1 = real_fun1,.fun2 = real_fun2,
};int main(){fun_ops *ops = &fuops;//赋值结构体//1.way01ops->fun1(const_cast("Hello Callback"));//2.way02IntHook tst;tst = ops->fun2;tst(1234);
}
<2>.typedef struct callback用法
#include 
#include 
#include 
#define MPH_MAX  10typedef void (*CharHook)(char *self);
typedef void (*IntHook)(int cout);void real_fun1(char *name){printf("xxx-------->%s(), line = %d, name = %s\n",__FUNCTION__,__LINE__,name);
}void real_fun2(int cout){printf("xxx-------->%s(), line = %d, cout = %d\n",__FUNCTION__,__LINE__,cout);
}// //way02:
typedef struct fun_ops{ //定义回调函数structCharHook fun1;IntHook fun2;
}fun_ops;fun_ops fuops = {//初始化函数指针的函数.fun1 = real_fun1,.fun2 = real_fun2,
};int main(){fun_ops *ops = &fuops;//赋值结构体//1.way01ops->fun1(const_cast("Hello Callback"));//2.way02IntHook tst;tst = ops->fun2;tst(1234);
}

相关内容

热门资讯

团支部个人心得体会 团支部个人心得体会范文(精选5篇)  当我们积累了新的体会时,不如来好好地做个总结,写一篇心得体会,...
劳动节活动心得体会 劳动节活动心得体会(通用5篇)  当在某些事情上我们有很深的体会时,可用写心得体会的方式将其记录下来...
护理学专业的心得体会 护理学专业的心得体会(通用13篇)  在平日里,心中难免会有一些新的想法,马上将其记录下来,这样有利...
工作心得体会感悟 工作心得体会感悟(通用18篇)  从某件事情上得到收获以后,往往会写一篇心得体会,如此就可以提升我们...
采购课程培训心得体会 采购课程培训心得体会范文(通用13篇)  我们心里有一些收获后,可以通过写心得体会的方式将其记录下来...
疫情期间做社区志愿服务心得 疫情期间做社区志愿服务心得  有了一些收获以后,写一篇心得体会,记录下来,这样可以帮助我们分析出现问...
被隔离人员心得体会 被隔离人员心得体会  我们有一些启发后,将其记录在心得体会里,让自己铭记于心,这么做可以让我们不断思...
从优秀到卓越读书心得 从优秀到卓越读书心得(通用18篇)  当阅读了一本名著后,大家心中一定有不少感悟,是时候静下心来好好...
小学生读书心得体会 小学生读书心得体会范文(精选10篇)  当我们受到启发,对生活有了新的感悟时,不妨将其写成一篇心得体...
教师学习心得体会 实用的教师学习心得体会(通用15篇)  我们得到了一些心得体会以后,往往会写一篇心得体会,它可以帮助...
档案管理的心得体会 档案管理的心得体会(精选11篇)  我们得到了一些心得体会以后,可以记录在心得体会中,这样我们就可以...
超市社会实践心得体会 超市社会实践心得体会范文(精选14篇)  我们在一些事情上受到启发后,可以寻思将其写进心得体会中,这...
保密工作心得 保密工作心得保密工作心得通过学习中央领导关于保密工作重要指示精神,了解到了保密工作在我们工作中的重要...
作风建设心得体会 作风建设心得体会(精选16篇)  当我们经过反思,有了新的启发时,可以记录在心得体会中,这样可以不断...
参加辅导员培训班心得 参加辅导员培训班心得范文  参加了咱们学校本学期举办的辅导员培训班后,我有所体会,获益匪浅。  很高...
解读《中学教师专业标准》心得 解读《中学教师专业标准》心得  《中学教师专业标准》的基本理念是:  (一)学生为本:尊重中学学生权...
爱岗敬业心得体会 爱岗敬业心得体会(精选12篇)  当我们经过反思,有了新的启发时,可以记录在心得体会中,这样能够培养...
人际交往心理学心得体会 人际交往心理学心得体会(精选7篇)  当我们经过反思,对生活有了新的看法时,可以寻思将其写进心得体会...
为民服务心得体会 为民服务心得体会(精选5篇)  当我们受到启发,对学习和工作生活有了新的看法时,将其记录在心得体会里...
劳动教育心得 劳动教育心得500字(精选57篇)  当在某些事情上我们有很深的体会时,就十分有必须要写一篇心得体会...