What is callback?

簡單的說,如果你使用了某個function,那麼你就是『call』了一個function。
如果系統或是函式是要求你給一個function pointer,
這個function pointer指到一個實際的函式(多半這個函式是你自己寫的)。
然後它會在適當的時間呼叫此function,則此function就是所謂的 callback function。
因為這個function是被『callback』了。

 

Example:

//---------------------------------------------------
//說明:                                                 
//        這個是一個callback function...                 
//        由Google上找到的例子加以修改而成的...         
//---------------------------------------------------
//若要測試,記得只能存成.c檔...
//(有warning,可以不用理)
//不可以存成.cpp檔...因為complier不會過...             
//---------------------------------------------------

#include <stdio.h>
//就是structure
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} };
//宣告callback function的prototype(原型)
void (*func)(void);        
int main(int argc,char *argv[])
{
    int index, i;
    index = 1;
    for (i = 0; i < 4; i++) 
    {
        if (index == tb[i].id)
        {
            func = tb[i].func;
            func();//呼叫callback function
        }
        index++;
    }
    printf("如果在這裡呼叫callback function呢?\n");
    func();
return 0;
}

arrow
arrow
    全站熱搜

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