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

从我所做的阅读中,Core Audio在很大程度上依赖于回调(和C ++,但这是另一个故事)。

我理解设置一个函数的概念(类型),该函数由另一个函数重复调用以完成任务。我只是不明白他们是如何设置以及他们如何工作的。任何例子将不胜感激。


aluckdog
浏览 483回答 3
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);
打开App,查看更多内容
随时随地看视频慕课网APP