色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用回調函數降低程序耦合性?

STM32嵌入式開發 ? 來源:CSDN ? 2023-06-16 17:22 ? 次閱讀

一、前言

耦合性是程序結構中各個模塊之間相互關聯的度量。它取決于各個模塊之間接口的復雜程度、調用模塊的方式以及哪些信息通過接口。

編寫代碼有兩個核心點:隔離變化、降低復雜度,而解耦是達到這兩個目標的重要手段。

二、使用回調函數降低耦合

問題描述:

實現回家函數come_home,傳入出發的時間,打印回家的方式以及到家的時間,有兩種回家方式:開車、走路。其中開車需要1小時,走路需要3小時。

功能分析:

由于回家方式不同,所用時間不同,因此到家的時間不同,可以將come_home函數代碼分為變化部分以及不變部分,將變化部分寫在回調函數中,實現隔離變化的目的。

變化部分:

輸出回家方式,根據出發時間,計算到家時間。

不變部分:

輸出到家時間。

1、定義回調函數指針

typedef int (*on_arrival_t)(void* ctx, int departure_time);

2、編寫come_home函數

void come_home(int departure_time, on_arrival_t on_arrival, void* ctx)
{
 int arrival_time = on_arrival(ctx, departure_time); /* 變化部分:調用回調函數計算到家時間 */
 printf("arrival_time: %d
", arrival_time);   /* 不變部分:打印到家時間 */
}

3、實現具體的回調函數

/* 開車回家 */
int on_drive(void* ctx, int departure_time) {
 int  arrival_time = departure_time + 1; /* 計算開車回家時間 */
 printf("drive
");      /* 打印回家方式 */


 return arrival_time;
}


/* 走路回家 */
int on_walk(void* ctx, int departure_time) {
 int  arrival_time = departure_time + 3; /* 計算走路回家時間 */
 printf("walk
");      /* 打印回家方式 */


 return arrival_time;
}

4、main函數

int main(int argc, char* argv[])
{
 come_home(17, on_drive, NULL); /* 17點開車回家 */
 come_home(17, on_walk, NULL); /* 17點走路回家 */
 
 return 0;
}

5、輸出

0df59604-0c25-11ee-962d-dac502259ad0.png




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 回調函數
    +關注

    關注

    0

    文章

    87

    瀏覽量

    11607

原文標題:使用回調函數降低程序耦合性

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言使用回調函數模擬委托與反射

    函數是C語言的核心概念。主調函數(caller)調用被調函數(callee)是一般的調用關系,如果被調
    發表于 08-03 16:12 ?485次閱讀

    調函數小結

    ,或者初步代碼完成后仍然會根據用戶需求添加很多的針對某種情況的處理方法,這時考慮采用回調函數方法 總之為系統功能擴展、需通過一種接口處理很多種情況,上下級隔離時,就要考慮使用回
    發表于 07-05 01:51

    pwm程序停止調用回調函數

    會做一個PWM,但有一個問題。搜索之后,我在這個論壇上找到了一個帖子,PWM不適用于動態定時器驅動程序,所以我把它轉換成靜態的。pwm開始工作得很好,但是程序停止調用回調
    發表于 03-05 10:05

    請問LWIP協議中是怎樣自動調用回調函數?

    請問各位大神,LWIP協議中是怎樣自動調用回調函數的呢?這個原理一直不太理解,求教!!
    發表于 03-24 22:29

    使用回調函數,button消失怎么回事

    就消失了。是不是不能再窗口的回調函數里,再使用回調函數的?我的目的是,使用機械鍵盤從頁面聚焦到button上。但是焦點一直找不到。有大神能告
    發表于 05-20 11:11

    請問zigbee中什么時候用回調函數

    我是zigbee新手,想問一下zigbee中什么時候用回調函數???能用通俗的話給講解一下嗎?謝謝求大神指點
    發表于 08-26 08:01

    C語言回調函數是什么

    什么是回調函數?為什么要使用回調函數?怎么使用回調
    發表于 12-28 07:11

    用DMA去讀取電壓都會調用回調函數的解決辦法

    希望用DMA去讀取電壓,但是每次轉化完成后都會調用回調函數,這樣太浪費CPU了,解決辦法如下:默認是開啟了中斷,但是只要調用HAL_NVIC_DisableIRQ(DMA2_Stream0_IRQn);把中斷關閉即可...
    發表于 08-16 08:38

    調函數的作用是什么?怎么使用回調函數

    什么是js回調函數?回調函數的作用是什么?怎么使用回調函數
    發表于 11-01 06:10

    怎樣去寫回調函數呢?怎樣去使用回調函數

    調函數的作用是什么?單片機怎么用回調函數在不同文件之間傳遞數據呢?怎樣去寫回調
    發表于 02-23 07:40

    為什么單片機中斷函數會使用回調函數實現?

    為什么單片機中斷函數會使用回調函數實現
    發表于 09-20 07:50

    LabWindows/CVI 程序調函數設計

    調函數是系統框架設計中非常重要的一種手段,所謂回調函數(callback )是指一個通過函數指針調用的
    發表于 05-03 16:54 ?1.1w次閱讀
    LabWindows/CVI <b class='flag-5'>程序</b> 回<b class='flag-5'>調</b><b class='flag-5'>函數</b>設計

    C語言使用回調函數模擬委托與反射

    函數是C語言的核心概念。主調函數(caller)調用被調函數(callee)是一般的調用關系,如果被調
    的頭像 發表于 03-14 10:19 ?1345次閱讀

    函數指針和回調函數的使用方法

    了解開發語言的朋友應該都會對回調函數有所了解,在很多的程序開發語言中都能看到回調的身影。很多場景下,當某個條件成立以后我們希望代碼執行某些指定的部分,這個時候可以考慮使
    的頭像 發表于 04-10 15:08 ?1178次閱讀

    如何使用C語言回調函數降低程序耦合呢?

    耦合程序結構中各個模塊之間相互關聯的度量。它取決于各個模塊之間接口的復雜程度、調用模塊的方式以及哪些信息通過接口。
    的頭像 發表于 02-22 11:34 ?667次閱讀
    如何使用C語言回<b class='flag-5'>調</b><b class='flag-5'>函數</b><b class='flag-5'>降低</b><b class='flag-5'>程序</b><b class='flag-5'>耦合</b><b class='flag-5'>性</b>呢?
    主站蜘蛛池模板: 亚洲免费在线观看 | 久久青青草原综合伊人 | 久色视频网 | 欧美精品一卡二卡 | 国产精自产拍久久久久久蜜 | 99国产精品久久久久久久日本竹 | WWW国产亚洲精品久久麻豆 | 欧美黑人巨大性极品hd欧 | 国产精品女上位好爽在线短片 | 18 japanese宾馆直播 | free高跟丝袜秘书hd | 亚洲精品乱码电影在线观看 | 国产在线观看香蕉视频 | 久久成人精品免费播放 | 丰满的大白屁股ass 丰满大屁俄罗斯肥女 | 久久99免费视频 | caoporn 超碰在线视频 | 99久久精品国内 | 久久黄色免费 | 免费人成网站永久 | 午夜国产羞羞视频免费网站 | 国模精品一区二区三区视频 | 国产精品A8198V久久A片 | 黑人干亚洲人 | 神马电影dy888午夜我不卡 | 无码欧美XXXXX在线观看裸 | 亚州三级视频 | 亚洲精品免播放器在线观看 | 港台三级大全 | 99久久久无码国产精精品 | 男女做爽爽爽视频免费软件 | 亚洲AV中文字幕无码久久 | xx在线观看 | 国产AV果冻传奇麻豆 | 四虎影视国产精品亚洲精品hd | 色情在线avav | 亚洲精品中文字幕一二三四区 | 菠萝菠萝蜜视频在线看1 | 欧美性FREE玩弄少妇 | 中国jjzz | 台湾18成人影院 |