標(biāo)題: 什么是回調(diào)函數(shù),有什么用 [打印本頁(yè)]

作者: 李冬    時(shí)間: 2024-3-1 16:23
標(biāo)題: 什么是回調(diào)函數(shù),有什么用
回調(diào)函數(shù)是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù)。為什么不直接調(diào)用函數(shù)。

作者: devcang    時(shí)間: 2024-3-1 23:31
往往是用在SDK、或反復(fù)調(diào)用的代碼,等情況。
作者: xiaobendan001    時(shí)間: 2024-3-2 07:19
我隱約記得回調(diào)的意思是函數(shù)自己可以調(diào)用自己的,不一定非要通過(guò)指針調(diào)用吧
作者: rayin    時(shí)間: 2024-3-2 08:09
用回調(diào)函數(shù),目的就是為了功能的靈活, 可以隨時(shí)通過(guò)函數(shù)指針改變軟件功能
作者: stardust_    時(shí)間: 2024-3-3 01:01
在某些簡(jiǎn)單和直接的情境下,直接調(diào)用函數(shù)就能解決問(wèn)題;卣{(diào)函數(shù)提供了更大的靈活性和可擴(kuò)展性,使得代碼更容易維護(hù)和修改,在某些情境下,使用回調(diào)函數(shù)可能更為合適:
1、需要?jiǎng)討B(tài)性和擴(kuò)展性的情境: 使用回調(diào)函數(shù)可以在運(yùn)行時(shí)指定要執(zhí)行的代碼。這使得程序更具動(dòng)態(tài)性,能夠根據(jù)需要在運(yùn)行時(shí)更改其行為。如果直接調(diào)用函數(shù),代碼的行為就是靜態(tài)的,不能在運(yùn)行時(shí)更改。

2、需要解耦合的情境: 使用回調(diào)函數(shù)可以實(shí)現(xiàn)函數(shù)之間的解耦合。這意味著調(diào)用方和被調(diào)用方之間的關(guān)系更加靈活,它們可以相對(duì)獨(dú)立地演變。如果直接調(diào)用函數(shù),兩者之間的關(guān)系更為緊密,不容易進(jìn)行修改和擴(kuò)展。

3、需要通用性的情境: 回調(diào)函數(shù)可以用于實(shí)現(xiàn)通用的接口和框架。一個(gè)函數(shù)可以接受一個(gè)回調(diào)函數(shù),而不關(guān)心具體的實(shí)現(xiàn),這使得這個(gè)函數(shù)更加通用和可重用。直接調(diào)用函數(shù)可能需要特定的實(shí)現(xiàn),降低了通用性。

事件處理: 在事件驅(qū)動(dòng)的編程中,回調(diào)函數(shù)常用于處理異步事件。當(dāng)某個(gè)事件發(fā)生時(shí),通過(guò)回調(diào)函數(shù)通知相應(yīng)的處理代碼。這種方式比輪詢或者等待更加高效。
作者: young_pig    時(shí)間: 2024-3-3 21:13
函數(shù)指針的調(diào)用,即是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù);
如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來(lái)調(diào)用其所指向的函數(shù)時(shí),就說(shuō)這是回調(diào)函數(shù)。
作者: nearsea    時(shí)間: 2024-4-10 10:29
其實(shí),回調(diào)函數(shù)更多的用途是程序上看起來(lái)整潔干凈,更容易模塊化,和直接調(diào)用區(qū)別不大,并且還犧牲了效率,但是目前處理器速度都很快,效率和整潔易用比較起來(lái)還是讓步一點(diǎn)。

可讀性和健壯性模塊化是現(xiàn)在程序設(shè)計(jì)的重要特點(diǎn)。
作者: 1600277881    時(shí)間: 2024-4-10 20:20
首先明確一些慨念問(wèn)題, 回調(diào)函數(shù),函數(shù)指針調(diào)用的函數(shù)是兩件事.
回調(diào)函數(shù)其作用是連接底層驅(qū)動(dòng)至應(yīng)用層
例如, 要做一個(gè)串口接收及拆包的底層驅(qū)動(dòng),當(dāng)接收到并解析數(shù)據(jù)包后,肯定需要一手段通知應(yīng)用層去處理這數(shù)據(jù),回調(diào)函數(shù)就是扮演這角色。
問(wèn)題在寫(xiě)底層驅(qū)動(dòng)時(shí)你的應(yīng)用層還沒(méi)做,我回調(diào)到哪兒都不適。
所以這回調(diào)函數(shù)就會(huì)通過(guò)函數(shù)指針的方式調(diào)用, 當(dāng)你做應(yīng)用層后, 就把此回調(diào)函數(shù)的指針指向你要的回調(diào)函數(shù)。

作者: 1600277881    時(shí)間: 2024-4-10 20:31
1600277881 發(fā)表于 2024-4-10 20:20
首先明確一些慨念問(wèn)題, 回調(diào)函數(shù),函數(shù)指針調(diào)用的函數(shù)是兩件事.
回調(diào)函數(shù)其作用是連接底層驅(qū)動(dòng)至應(yīng)用層
...

比如你在用ST的庫(kù),希望它處理數(shù)據(jù)接收,收到你所指定數(shù)量的數(shù)據(jù)后通知你去處理數(shù)據(jù),人家ST在寫(xiě)這庫(kù)的時(shí)候你的軟件還沒(méi)做呢, 你讓他怎樣通過(guò)直接調(diào)用函數(shù)來(lái)通知你?
所以要用函數(shù)指針的方式做回調(diào)函數(shù),你的應(yīng)用做好后,就把此回調(diào)函數(shù)的指針指向你要的回調(diào)函數(shù)就完事了
作者: 大漠落日    時(shí)間: 2024-4-12 08:33
用函數(shù)指針可以方便的改變功能,指向不同的處理函數(shù)




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1