Voici un exemple de callbacks en C.
Supposons que vous souhaitiez écrire un code qui permette d'enregistrer des rappels à appeler lorsqu'un événement se produit.
Définissez d'abord le type de fonction utilisé pour le rappel :
typedef void (*event_cb_t)(const struct event *evt, void *userdata);
Définissez maintenant une fonction utilisée pour enregistrer un rappel :
int event_cb_register(event_cb_t cb, void *userdata);
Voici à quoi ressemblerait un code qui enregistre un rappel :
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);
...
Dans la partie interne du distributeur d'événements, le rappel peut être stocké dans une structure qui ressemble à ceci :
struct event_cb {
event_cb_t cb;
void *data;
};
Voici à quoi ressemble le code qui exécute un rappel.
struct event_cb *callback;
...
/* Get the event_cb that you want to execute */
callback->cb(event, callback->data);