我已经开始审查回调。我在 SO 上找到了这个链接: 什么是 C 中的“回调”以及它们是如何实现的? 它有一个很好的回调示例,与我们在工作中使用的非常相似。但是,我试图让它工作,但我有很多错误。
#include <stdio.h>
/* Is the actual function pointer? */
typedef void (*event_cb_t)(const struct event *evt, void *user_data);
struct event_cb
{
event_cb_t cb;
void *data;
};
int event_cb_register(event_ct_t cb, void *user_data);
static void my_event_cb(const struct event *evt, void *data)
{
/* do some stuff */
}
int main(void)
{
event_cb_register(my_event_cb, &my_custom_data);
struct event_cb *callback;
callback->cb(event, callback->data);
return 0;
}
我知道回调使用函数指针来存储函数的地址。但是有几件事我觉得我不明白:
- “注册回调”和“事件调度程序”是什么意思?