Je suis en train de faire ce devoir de classe, en utilisant le C classique, et je suis coincé avec ce problème sur les fonctions de rappel qui prennent les arguments variables count et type.
En gros, je travaille sur un arbre haché (un arbre où chacun des nœuds est un arbre de hachage), et j'ai une certaine stratégie de traversée qui sera utilisée plusieurs fois à des fins différentes, donc je l'ai implémentée comme suit ht_walk(HashTree tree, (*callback)(Element e))
de sorte que la fonction appelée en tant que callback traite l'élément de la manière nécessaire.
Le problème est que, dans la plupart des situations de mon problème, la fonction de rappel devra prendre différents arguments. Je sais comment concevoir une fonction avec une liste d'arguments variable en utilisant des fonctions 'variadiques' (en utilisant stdarg, printf-way), mais je ne sais pas comment 'repasser' ces arguments à la fonction de rappel.
Laissez-moi vous donner un exemple concret : supposons que j'ai une fonction de rappel appelée addToList(Element e, List list)
et que ma déclaration ht_walk est maintenant ht_walk(HashTree tree, (*callback)(Element e), ...)
. Considérons que je veux utiliser ht_walk comme dans le snippet suivant :
HashTree my_tree = ht_create();
/* run some algorithm that populates the tree somehow */
List my_list = list_create();
ht_walk(my_tree, addToList, my_list);
Y a-t-il un moyen de le faire ? Merci d'avance !