Pointeurs de fonction et des rappels de service en C

J'ai commencé à réviser les rappels. J'ai trouvé ce lien sur DONC:
Qu'est ce qu'un "rappel" en C et comment sont-ils mis en œuvre? Il a un bon exemple de callback qui est très similaire à ce que nous utilisons au travail. Cependant, j'ai essayé de le faire fonctionner, mais j'ai de nombreuses erreurs.

#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;
}

Je sais que les rappels d'utiliser des pointeurs de fonction pour stocker une adresse d'une fonction. Mais il y a quelques choses que je trouve que je ne comprends pas:

  • Ce que l'on entend par "enregistrement de la fonction de rappel" et "event dispatcher"?
Pourquoi ne pas inclure vos erreurs?

OriginalL'auteur ant2009 | 2009-03-10