C

C语言回调函数

Callback function

Posted by Jannon on August 3, 2018

C语言回调函数

C语言常常需要设置一些回调函数,在合适的时候进行回调函数调用达到反馈结果的作用。

1.定义一个回调函数指针

typedef void (*event_cb_t)(const struct event *evt, void *userdata);

2.定义一个函数,并将回调函数作为参数传入该函数

int event_cb_register(event_cb_t cb, void *userdata);

3.定义回调函数的实现

static void my_event_cb(const struct event *evt, void *data)
{
 /* 回调函数应该要做的处理代码 */
}

4.调用将回调函数作为参数的函数

event_cb_register(my_event_cb, &my_custom_data);

也可以将回调函数定义到一个结构体中

struct event_cb {
    event_cb_t cb;
    void *data;
};

通过如下方式进行回调

struct event_cb *callback;

...

/* 获取到该结构体并执行回调函数 */

callback->cb(event, callback->data);