#include <stdio.h>
-
struct table {
-char id;
-void *func;
};
-
void *funcA() { printf("This is funcA()\n"); }
void *funcB() { printf("This is funcB()\n"); }
void *funcC() { printf("This is funcC()\n"); }
void *funcD() { printf("This is funcD()\n"); }
-
const struct table tb[] = {
-{1, funcA},
-{2, funcB},
-{3, funcC},
-{4, funcD}
};
-
int main()
{
-int index, i;
-void (*func)(void);
-
-index = 1;
-
-for (i = 0; i < 4; i++) {
--if (index == tb[i].id) func = tb[i].func;
-}
-func();
-
-return 0;
}
上面的小程式是 callback function 的簡單應用,
簡單的說 callback 的概念就是回傳某個函數的指標,
呼叫者便可透過這個函數指標直接執行函數…
至於 callback 和一般的函數呼叫有什麼不同,
就結果來看是一樣的:某個函數被呼叫然後執行。
而程式碼撰寫的語法、中間處理的過程卻不一樣,
callback 可以被應用在什麼地方?
什麼情況下用 callback 來設計程式會比較好?
目前道行尚淺,也許有朝一日可以得到答案吧。
- Jun 25 Mon 2007 00:23
奇妙的 Callback
全站熱搜
留言列表
發表留言