先理解call和callback
通常我們寫程序,是主動去調廠商或者其他人提供的API,這就是普通的API調用,翻譯過來就是 call(我們主動)
那么如果是我們實現了函數的功能,但是需要廠商或者其他人來觸發怎么辦(我們被動)?比如檢測設備狀態變化,最好是有變化立即告訴我們才好,這時候回調函數就很理想了,返回過來就是callback
一個callback回調的例子
1 //回調函數的定義和實現 2 #include <stdio.h> 3 4 //函數只針對額格式為int(*CallBackFun)(char *p),即:返回值(指針名)(參數列表) 5 //為回調函數命名,類型命名為CallBackFun,參數為char *p 6 typedef int(*CallBackFun)(char *p); 7 8 //方法A,格式符合CallBackFun的格式,因此可以看做是一個CallBackFun 9 int A(char *p) 10 { 11 printf("-------A 回調打印傳入參數 \n-------begin print:%s\n",p); 12 return 0; 13 }
1 回調函數的調用和執行 2 #include "callback2.c" 3 4 //執行回調函數的函數 5 int call(char *p, int(*ptr)(char*)) //或者int call(char *p,int(*ptr)()) 6 { 7 (*ptr)(p); 8 return 0; 9 } 10 11 //main 函數 12 int main() 13 { 14 char *p = "回調函數,請打印字符 lllll"; 15 //call(p,A); //通過執行函數,調用回調函數 16 //(*A)(p); //也可以直接通過函數指針調用回調函數,不經過執行函數,簡單高效 17 A(p); //這里就更簡單了,直接調用回調函數,連函數指針都省了 18 19 return 0; 20 }