Cast pour le pointeur de fonction?

J’ai rencontré la ligne de code ci-dessous. Je pense qu’il peut s’agir d’un transtypage vers un pointeur de fonction qui retourne vide et prend un pointeur vide

(void (*)(void *))SGENT_1_calc 

Oui c’est correct. Je trouve cela très difficile à lire et je suggère donc de déclarer la signature de la fonction à pointer:

  typedef void sigrout_t(void*); 

J’ai également la convention de codage selon laquelle les types se terminant par rout_t sont tels types pour les signatures de fonctions. Vous pourriez le nommer autrement, puisque _t est un suffixe réservé par Posix

dernier sur je suis casting, peut-être l’appeler comme

  ((sigrout_t*) SGENT_1_calc) (someptr); 

Oui, la fonction devrait ressembler à ceci

 void func(void*); 

Mais la déclaration manque une cible, puisqu’un casting sur rien est inutile. Donc ça devrait être comme

 func = (void (*)(void *))SGENT_1_calc; 

Oui, c’est un casting comme vous l’avez dit.

oui c’est un pointeur de fonction que vous pouvez affecter à une fonction avec proto void funcname (void *) Ici, SGENT_1_calc peut être directement affecté à funcname