从我所做的阅读中,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);
- 3 回答
- 0 关注
- 521 浏览
添加回答
举报
0/150
提交
取消