Я начал просматривать обратные вызовы. Я нашел эту ссылку на SO: Что такое "callback" в 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;
}
Я знаю, что обратные вызовы используют указатели функций для хранения адреса функции. Но есть несколько вещей, которые, как я считаю, я не понимаю:
- Что означает "регистрация обратного вызова" и "диспетчер событий"?