Callback function

常常看到Call back function,但是沒有人講的清楚
於是我就網路上查了.......

這個網頁講的算最清楚的了

[GEEK]What is Callback Function


對我來說,call back哪裡算call back了,
其實他就是讓一個函數有多種可能性
藉由不同的條件可以發揮不同的功能

以下另紀錄一下網頁展示的程式碼,怕哪天作者移除掉就麻煩了

來源 : http://walkingice.twbbs.org/blog/archives/839
只放拖鞋的鞋櫃


callback function 是甚麼?它就是我們要提供的一個解法。有了 callback function 便能做到許多抽象化的處理,譬如說在上層我們指派黑社會娘娘腔金牌殺手去對付丁力。提供不同的 callback function,底下的金牌殺手就可能用毒蛇、用迴力標,甚至是家屬謝禮散。
川島芳子小姐只在乎丁力有沒有被殺死,至於怎麼被殺死的,她不管!
底下是一小段簡單的程式碼,希望可以給還不了解的朋友一點點幫助。透過 function pointer,同樣是呼叫 exe_callback() 卻產生不一樣的結果。


1 #include
 2 #include
 3
 4 /********  in another library ******/
 5 static void (*callback_func)() = NULL;
 6
 7 void set_callback(void (*callback)()) {
 8         callback_func = callback;
 9 }
10
11 void exe_callback() {
12         if(callback_func == NULL) {
13                 printf("No callback function!!\n");
14         }else {
15                 callback_func();
16         }
17 }
18 /**************** End *******************/
19
20 void say_hello() {
21         printf("Hello, Girl\n");
22 }
23
24 void say_byebye() {
25         printf("Byebye, girl!\n");
26 }
27
28 int main() {
29         set_callback(say_hello);
30         printf("Execute callback function:");
31         exe_callback();
32         set_callback(say_byebye);
33         printf("Execute callback function:");
34         exe_callback();
35         return 0;
36 }

留言

walkingice寫道…
Hi,

文章隨意轉貼,CC licensed.

我想我忘記把某一個部份說得很清楚,之所以被稱為 Callback function,我個人覺得是「呼叫該 function 的角色不一樣」。

一般的情況會是程式一直跑,在這過程中我們 call 某一個 function 來執行。Callback function 則是把這個 function 丟出去,在發生某些情況的時候由別人來呼叫
Eddie Chen寫道…
了解,感謝你的回答
我個人從那段code的理解也是一樣

這個網誌中的熱門文章

如何在VS2022 Community 簡要的設定UDK2018的環境

自製讀取 H 檔案並找出 define 的程式

如何Build UDK2018