Problème de compréhension d'une écriture

Résolu
cs_hdaniel
Messages postés
37
Date d'inscription
vendredi 9 juillet 2004
Statut
Membre
Dernière intervention
18 octobre 2010
- 18 oct. 2010 à 16:25
cptpingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
- 18 oct. 2010 à 17:51
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

cptpingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
18 oct. 2010 à 17:14
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
3
cs_hdaniel
Messages postés
37
Date d'inscription
vendredi 9 juillet 2004
Statut
Membre
Dernière intervention
18 octobre 2010
1
18 oct. 2010 à 17:42
simplifié c'est plus simple!

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

hdan
0
cptpingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
18 oct. 2010 à 17:51
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
0