2015年10月18日 星期日

C Callback function



C語言裡面的Callback function主要的概念就是:

傳回某個函數的指標,呼叫者即可透過該函數指標直接執行函數…


參考網路上的範例

//宣告callback function的prototype(原型)

typedef struct{

uint8_t time ;

void (*bsp_callback)(void);

}Display_Info_struct;


//宣告該struct的變數 DisplayInfo

static Display_Info_struct DisplayInfo;


//定義會被呼叫的函式

void showHelloword()

{

printf("Hello world.\n");

}


//定義會使用CallBack Fuction的函式

void BSP_SHOW(uint8_t time,void (*callback)(void))

{

DisplayInfo.time = time;

DisplayInfo.bsp_callback = callback;

while(DisplayInfo.time > 0){

--DisplayInfo.time;

if(DisplayInfo.bsp_time == 0){

//呼叫callback function

if(DisplayInfo.bsp_callback)

DisplayInfo.bsp_callback();

//清除callback fuction

DisplayInfo.bsp_callback = 0;

}

delay_ms(1000); // 1 second

}

}


//由main執行的呼叫點起始

void main(){

//顯示10秒的hello word字串

BSP_SHOW( 10, showHelloword);

}


Ref.

http://eeepage.info/examplecallback-function/

沒有留言:

張貼留言