2011-12-21 14 views
6

¿Alguien puede decirme qué queremos decir exactamente registrando una función de devolución de llamada en C con algunos ejemplos? He buscado mucho en la red, pero no pude obtener respuestas satisfactorias. Incluso busqué en desbordamiento de pila, pero no pude obtener la idea perfecta al respecto.¿Qué quiere decir con registrar una función de devolución de llamada en C?

¿Qué son las devoluciones de llamadas de Notify y las llamadas de respuesta asíncronas?

+2

posible duplicado de [¿Qué es una "devolución de llamada" en C y cómo se implementan?] (Http://stackoverflow.com/questions/142789/what-is-a-callback-in-c-and-how -are-they-applied) – Hasturkun

+0

Vea también, http://stackoverflow.com/a/147241/20270 – Hasturkun

+0

la página de la wikipedia es decente http://en.wikipedia.org/wiki/Callback_%28computer_programming%29 – LB40

Respuesta

11

El registro de una función de devolución de llamada simplemente significa que está organizando una entidad externa para llamar a su función.

Puede suceder más adelante o puede suceder de inmediato. Un ejemplo sencillo es qsort. Se declara así:

void qsort(void *base, size_t nel, size_t width, 
     int (*compar)(const void *, const void *)); 

Para usarlo, debe pasar un puntero a una función que compara los elementos - la devolución de llamada.

Ese fue un ejemplo simple, pero generalmente "registrar una devolución de llamada" significa pasar un puntero de función a alguien que lo llamará por usted en el futuro.

Cuestiones relacionadas