为了账号安全,请及时绑定邮箱和手机立即绑定

C中的“回调”是什么?它们是如何实现的?

C中的“回调”是什么?它们是如何实现的?

C
aluckdog 2019-09-18 14:32:34
从我所做的阅读中,Core Audio在很大程度上依赖于回调(和C ++,但这是另一个故事)。我理解设置一个函数的概念(类型),该函数由另一个函数重复调用以完成任务。我只是不明白他们是如何设置以及他们如何工作的。任何例子将不胜感激。
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

以下是C中回调的示例。


假设你想编写一些代码,允许在某些事件发生时注册回调。


首先定义用于回调的函数类型:


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

现在,定义一个用于注册回调的函数:


int event_cb_register(event_cb_t cb, void *userdata);

这是注册回调的代码:


static void my_event_cb(const struct event *evt, void *data)

{

    /* do stuff and things with the event */

}


...

   event_cb_register(my_event_cb, &my_custom_data);

...

在事件调度程序的内部,回调可以存储在如下所示的结构中:


struct event_cb {

    event_cb_t cb;

    void *data;

};

这就是执行回调的代码。


struct event_cb *callback;


...


/* Get the event_cb that you want to execute */


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


查看完整回答
反对 回复 2019-09-18
  • 3 回答
  • 0 关注
  • 482 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信