Bonjours,
Je cherche à comprendre la notion de "Callback" en C et à quoi elle sert.
J'ai fait une petite recheche dans la Faq et aussi dans le net mais j'arrive pas à trouver grand choses.
Pouvez vous m'aider?
Merci d'avance
Bonjours,
Je cherche à comprendre la notion de "Callback" en C et à quoi elle sert.
J'ai fait une petite recheche dans la Faq et aussi dans le net mais j'arrive pas à trouver grand choses.
Pouvez vous m'aider?
Merci d'avance
En gros, cette notion (qui signifie plus ou moins "appel en retour") signifie que tu passes un pointeur de fonction A à une fonction B, et B appellera A au cours de son exécution.
Par exemple, la fonction standard qsort() prend un pointeur vers une fonction de comparaison, c'est un mécanisme de callback.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Pouvez vous m'aider à trouver un cours approfondi sur cette notion??
Malheureusement, je n'en connais aucun.
Les fonctions callback de comparaison sont parmi les plus simples et peut-être les plus utilisées. Tu devrais en comprendre le concept assez facilement si tu réécris qsort() ou bsearch().
Ensuite viennent les fonctions callback des interfaces graphiques, beaucoup plus compliquées (WNDPROC pour les interfaces graphiques Win32, signaux/slots pour Qt, etc.).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Les fonctions passées à la fonction signal() sont également des fonctions callbacks : elles sont spécifiées par le programme, mais jamais directement appelées. Voir cet exemple de la FAQ. Pour comprendre le fonctionnement des fonctions callbacks, il suffit juste de savoir utiliser les pointeurs de fonction et pour ça, il y a plein de tutoriels et de FAQs sur Developpez.
signal(), c'est encore plus compliqué, puisque tu as moins de contrôle sur quand la fonction sera appelée.
Pour qsort() et bsearch(), au moins tu sais que la fonction callback sera appelée (de 0 à N fois) uniquement pendant l'exécution de qsort()/bsearch()...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager