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