2011-12-21 10 views
6

Czy ktoś może mi powiedzieć, co dokładnie mamy na myśli, rejestrując funkcję zwrotną w C z kilkoma przykładami? Wiele szukałem w sieci, ale nie mogłem uzyskać zadowalających odpowiedzi. Szukano nawet w przepełnieniu stosu, ale nie udało się uzyskać idealnego rozwiązania.co masz na myśli, rejestrując funkcję zwrotną w C?

Co to są oddzwonienia zwrotne i asynchroniczne oddzwanianie?

+2

możliwy duplikat [Co to jest "oddzwanianie" w C i jak są one realizowane?] (Http://stackoverflow.com/questions/142789/what-is-a-callback-in-c-andhow -to-one-realizowane) – Hasturkun

+0

Zobacz także http://stackoverflow.com/a/147241/20270 – Hasturkun

+0

strona wikipedia jest przyzwoita http://en.wikipedia.org/wiki/Callback_%28computer_programming%29 – LB40

Odpowiedz

11

Rejestracja funkcji zwrotnej oznacza po prostu, że organizujesz zewnętrzną jednostkę do wywoływania swojej funkcji.

Może się to zdarzyć w późniejszym terminie lub może się zdarzyć od razu. Prostym przykładem jest qsort. Jest zadeklarowana następująco:

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

Aby go wykorzystać, trzeba przekazać wskaźnik do funkcji, która porównuje elementy - zwrotnego.

To był prosty przykład, ale ogólnie "rejestracja wywołania zwrotnego" oznacza przekazanie wskaźnika funkcji komuś, kto będzie go w przyszłości nazywał.

Powiązane problemy