Callback function
常常看到Call back 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 }
於是我就網路上查了.......
這個網頁講的算最清楚的了
[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 }
留言
文章隨意轉貼,CC licensed.
我想我忘記把某一個部份說得很清楚,之所以被稱為 Callback function,我個人覺得是「呼叫該 function 的角色不一樣」。
一般的情況會是程式一直跑,在這過程中我們 call 某一個 function 來執行。Callback function 則是把這個 function 丟出去,在發生某些情況的時候由別人來呼叫
我個人從那段code的理解也是一樣