2011-12-21 21 views
6

Bất cứ ai có thể vui lòng cho tôi biết chính xác chúng tôi có ý nghĩa gì khi đăng ký một hàm gọi lại trong C với một số ví dụ? Tôi đã tìm kiếm rất nhiều trong mạng, nhưng tôi không thể có được một câu trả lời thỏa đáng. Thậm chí tìm kiếm trong tràn ngăn xếp nhưng không thể có được ý tưởng hoàn hảo về nó.bạn có ý nghĩa gì khi đăng ký chức năng gọi lại trong C?

Thông báo gọi lại và gọi lại không đồng bộ là gì?

+2

có thể trùng lặp của [Gọi lại "là gì trong C và cách chúng được triển khai?] (Http://stackoverflow.com/questions/142789/what-is-a-callback-in-c-and-how -are-them-implement) – Hasturkun

+0

Xem thêm, http://stackoverflow.com/a/147241/20270 – Hasturkun

+0

trang wikipedia là phong nha http://en.wikipedia.org/wiki/Callback_%28computer_programming%29 – LB40

Trả lời

11

Đăng ký chức năng gọi lại đơn giản có nghĩa là bạn đang sắp xếp cho một thực thể bên ngoài để gọi hàm của bạn.

Điều này có thể xảy ra sau hoặc có thể xảy ra ngay lập tức. Một ví dụ đơn giản là qsort. Nó được khai báo như thế này:

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

Để sử dụng nó, bạn phải chuyển con trỏ đến hàm so sánh các phần tử - gọi lại.

Đó là một ví dụ đơn giản nhưng thường "đăng ký gọi lại" có nghĩa là chuyển con trỏ hàm tới người sẽ gọi cho bạn trong tương lai.

Các vấn đề liên quan