Linux下C語言實現回調函數的例子


  先理解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 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM