回调函数的实现主要基于函数指针 void (*fun)();
详细代码如下:
#include <stdio.h>
typedef struct{
int status;
void (*statusChange)(); //定义回调函数指针
}T_Device;
// 一个全局变量
T_Device g_device;
// 注册回调函数
// 实质为将要回调的函数callback地址传给回调函数指针
void addCallbackFunc(void (*statusChange)(int status)){
g_device.statusChange = statusChange;
}
void run(){
g_device.status = 1; // 该处状态值可由其他函数修改达到不同效果,这里为方便展示直接赋值
// 回调函数被触发
if(g_device.status == 1){
// 若存在回调函数则执行
if(g_device.statusChange != NULL){
g_device.statusChange(g_device.status);
}
}
}
// 定义一个回调函数体
void callback(int status){
printf("call back -> status %d\n", status);
}
int main()
{
addCallbackFunc(callback);
run();
}