2018/01/12

用C寫一個簡單的callback function sample


成為一個軟體工程師, C語言裡面的Callback function算是滿值得一學的東西
主要的概念就是: 傳回某個函數的指標,呼叫者即可透過該函數指標直接執行函數…
以下是一個簡單的範例, 可以在一個檔案 e.g: xxx.c 內完成

1. 宣告callback function的prototype(原型)

typedef struct{	uint8_t time ;	void (*bsp_callback)(void); }Display_Info_struct; 

2.宣告該struct的變數 DisplayInfo

static Display_Info_struct DisplayInfo; 

3.定義會被呼叫的函式

void showHelloword(){	printf("Hello world.\n");} 

4.定義會使用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.time == 0){		//呼叫callback function		if(DisplayInfo.bsp_callback) 			DisplayInfo.bsp_callback(); 		//清除callback fuction		DisplayInfo.bsp_callback = 0;            }            delay_ms(1000); // 1 second         }} 

5.由main執行的呼叫點起始

void main(){	//顯示10秒的hello word字串	BSP_SHOW( 10, showHelloword); }

大概就這樣的架構
如果編譯有誤或是其他問題, 再debug一下吧~

沒有留言:

張貼留言