回调函数中使用void返回类型,主要是该回调函数常用于通知时间发生或者传递处理结果,不是用于返回计算结果。
使用int类型 则需要return返回,如2中main方法中的使用。
关注点分离:
主调函数负责核心流程控制;回调函数负责具体相应逻辑,两者通过参数通信,不需要返回值通道
好处:
回调函数是被动执行的,不应该主动想调用者返回结果;接口较为简洁;事件循环系统无法处理有返回值的回调;返回值在多线程回调中会引起竞争条件
1.回调函数作为变量类型
//1.回调函数作为变量类型
#include <stdio.h>
//定义指针函数类型
typedef void (*Callbackptr)(int);
//回调函数
void myCallback(int value){
printf("收到参数: %d\n",value);
}
//主函数
int main(){
//创建指向mycallback的函数指针 下面这句是核心
Callbackptr func_ptr = &myCallback;
//通过函数指针调用回调
func_ptr(34);
}
2.回调函数作为参数类型
//2.回调函数作为参数类型
#include<studio.h>
//定义指针类型
typedef void(*CallbackPtr)(int)
//回调函数
void MyCallback(int value){
printf("输出值为:%d/n", value);
}
//调用回调函数 下面的方法是核心
void eventHandler(CallbackPtr callback, int data){
printf("正在输出中");
callback(data); //当eventHandle被调用时,按照指针类型启动callback回调方法,并将data值赋给这个方法中的value
}
//主函数
int main(){
eventHandler(MyCallback,100);
return 0;
}
933

被折叠的 条评论
为什么被折叠?



