Problème de compréhension d'une écriture [Résolu]

Signaler
Messages postés
37
Date d'inscription
vendredi 9 juillet 2004
Statut
Membre
Dernière intervention
18 octobre 2010
-
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
-
Bonjour,

un extrait du code :

- dans un .h :
typedef struct EVENT_STRUCT_TAG {
vrt_event_handler_t handler; //!< Function pointer to event handler.
void *attribute; //!< Pointer to the storage where the event's attributes can be found. NULL if none available.
} vrt_event_t;

- et dans un .c :

/* Extract next event and call the event handler if it is known to the system. */
vrt_event_t *this_event = &vrt_event_fifo[vrt_event_fifo_tail];

//....//
(this_event->handler)(this_event->attribute);


c'est sur la dernière expression "(this_event->handler)(this_event->attribute); " que je bloque
je suis pas habitué à cette écriture.
si qq pouvait m'éclairer ;)



hdan

3 réponses

Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
C'est juste l'utilisation d'un pointeur sur fonction:

#include <stdio.h>

typedef void (*pfunc)(int);

void displayInt(int a)
{
  printf("Int est: %i\n", a);
}

int main()
{
  pfunc func = &displayInt;

  func(120);
  (func)(90); /* ou on peut parenthésé */

  return 0;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
37
Date d'inscription
vendredi 9 juillet 2004
Statut
Membre
Dernière intervention
18 octobre 2010

simplifié c'est plus simple!

juste une question subsidiaire, :), il avait un intérêt de mettre une parenthèse?

hdan
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
Sûrement pour lever une ambiguïté, mais je n'ai pas d'exemples en tête qui pourraient en provoquer.
Dans l'exemple que tu as donné, on peut se passer de la parenthèse.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question