qu'entendez-vous par l'enregistrement d'une fonction de rappel en C?
Quelqu'un peut-il me dire qu'entend-on exactement par l'enregistrement d'une fonction de rappel en C avec quelques exemples? J'ai beaucoup cherché sur le net, mais je ne trouvais pas de réponses satisfaisantes. Même cherché dans le débordement de la pile, mais ne pouvait pas obtenir une meilleure idée à ce sujet.
Quelles sont les Informer de rappels et de l'appel Asynchrone dos?
- double possible de qu'est Ce qu'un "rappel" en C et comment sont-ils mis en œuvre?
- Voir aussi, stackoverflow.com/a/147241/20270
- la page wikipedia est décent en.wikipedia.org/wiki/Callback_%28computer_programming%29
- stackoverflow.com/questions/2152974/...
Vous devez vous connecter pour publier un commentaire.
L'enregistrement d'une fonction de rappel signifie simplement que vous organisez pour une entité externe à l'appel de votre fonction.
Il peut arriver à un moment plus tard, ou cela peut se produire tout de suite. Un exemple simple est
qsort
. Il est déclaré comme ceci:Pour l'utiliser, vous devez passer un pointeur vers une fonction qui compare les éléments de la fonction de rappel.
Qui a été un exemple simple, mais d'une façon générale "l'enregistrement d'un rappel" signifie le passage d'un pointeur de fonction à quelqu'un qui va l'appeler pour vous dans l'avenir.
L'enregistrement d'un rappel de moyens pour passer un pointeur de fonction à celui qui appelle votre fonction via le pointeur
Pour une compréhension plus facile d'Envisager de A et B qui sont deux entités impliquées dans le code.
Un a écrit une fonction dire mafonction
Maintenant, quand il est dit Un va inscrire un rappel avec B, il signifie Une volonté d'envoyer le pointeur de fonction à B
Par l'envoi de pointeur de fonction à B, Une offre d'accès à la fonction
Pour enregistrer le rappel il y aura une fonction où Un peut passer le pointeur de la
Un va appeler la fonction comme
Ce cb_register fonction est définie dans B comme
Par exemple un struct_B est déclarée qui stocke
B a stocké l'adresse (qui le pointeur de fonction points) et vous pouvez l'utiliser pour appeler la fonction plus tard.
Lorsque B appelle la fonction via le pointeur de fonction, il est appelé en tant que rappel.
B a juste besoin de savoir le prototype de la fonction à appeler la fonction et ne peut être complètement ignorant de quoi la fonction.
Dans ce cas, la fonction sera appel comme