定义回调函数类型

[! 函数指针重定义] typedef void (*offline_callback)(void *);

  1. 基础函数指针原型:void ( * )(void * )
  2. typedef 作用:给这个原型起别名
  3. 别名:offline_callback typedef void (*offline_callback)(void *);
typedef void (*offline_callback)(void *);

“注册回调函数” 接口

static offline_callback g_offline_cb = NULL; // 全局回调函数指针
void register_offline_callback(offline_callback cb) 
{ 
	g_offline_cb = cb; // 保存用户传入的回调函数地址 
}

用户自定义回调函数

void my_offline_handler(void *arg)
{
	// 这里写离线后的处理逻辑,比如保存数据、打印日志
	int *data = (int *)arg; // void*可以转换为任意类型指针
	printf("检测到离线!参数:%p\n", arg);
}

注册

[! 函数名与函数指针的隐式转换] 函数名不是指针,但它在绝大多数场景下会 “隐式转换” 为指向该函数的函数指针—— 两者不是同一个东西,但使用时常常表现得等价。

register_offline_callback(my_offline_handler);