#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 來設計程式會比較好?

目前道行尚淺,也許有朝一日可以得到答案吧。


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 matis 的頭像
    matis

    Never give up

    matis 發表在 痞客邦 留言(0) 人氣()