日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

回调函数总结(个人见解)

發布時間:2023/12/9 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 回调函数总结(个人见解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
回調函數總結(個人見解):
1.?? ?回調函數的實現?? ?==>?? ?被調用者寫
2.?? ?寫庫的人?? ?==> 調用回調函數的人 ==> 調用者
2.1?? ?調用者:
?? ??? ?1) 不關心誰是被調用者
?? ??? ?2) 只關心回調函數的原型及返回值
?? ??? ?3) 聲明回調函數的接口,回調函數的實現交給被調用者去處理
2.2?? ?被調用者
?? ??? ?1) 根據調用者聲明的回調函數接口原型進行實現
?? ??? ?2) 實現規則由被調用者控制
?? ??? ?3) 被調用者可以修改實現規則
3.?? ?若回調函數接口(返回值或參數列表)發生變化,則其實現或調用者都可能要修改代碼!

如有不同意見,歡迎探討!

軟件模塊之間總存在一定的接口,調用方式可分為三類: 同步調用,回調,異步調用
1. 同步調用最簡單
2. 回調是異步調用的基礎

許多編譯器有幾種調用規范。
如在Visual C++中,可以在函數類型前加_cdecl,_stdcall或者_pascal來表示其調用規范(默認為_cdecl)。
C++ Builder也支持_fastcall調用規范。
調用規范影響編譯器產生的給定函數名,參數傳遞的順序(從右到左或從左到右),堆棧清理責任(調用者或者被調用者)以及參數傳遞機制(堆棧,CPU寄存器等)。
將調用規范看成是函數類型的一部分是很重要的;不能用不兼容的調用規范將地址賦值給函數指針。

回調函數就好像是一個中斷處理函數,系統在符合你設定的條件時自動調用。為此,你需要做三件事:

1. 聲明;statci int __stdcall MyAdd(int x, int y)
2. 定義;int MyAdd(intx, int y){(實現)}
3. 設置觸發條件,就是在你的函數中把你的回調函數名稱轉化為地址作為一個參數,以便于系統調用。
聲明和定義時應注意:回調函數可以作為類的成員函數,但必須聲明為靜態方法。

--------------
在其它類、模塊使用時要先導出那個回調類型
如:typedef BOOL(CS_NVR_CALLBACK* CS_NVR_fpVMapReport)(LPMON_ITEM pStuMonItem, LPCAM_ITEM pStuCamItem, long lParam);
其中CS_NVR_fpVMapReport就是回調函數的類型

總結

以上是生活随笔為你收集整理的回调函数总结(个人见解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。