0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用C語言回調(diào)函數(shù)降低程序耦合性呢?

STM32嵌入式開發(fā) ? 來源:CSDN ? 2024-02-22 11:34 ? 次閱讀

一、前言

耦合性是程序結(jié)構(gòu)中各個(gè)模塊之間相互關(guān)聯(lián)的度量。它取決于各個(gè)模塊之間接口的復(fù)雜程度、調(diào)用模塊的方式以及哪些信息通過接口。 編寫代碼有兩個(gè)核心點(diǎn):隔離變化、降低復(fù)雜度,而解耦是達(dá)到這兩個(gè)目標(biāo)的重要手段。

二、使用回調(diào)函數(shù)降低耦合

問題描述:

實(shí)現(xiàn)回家函數(shù)come_home,傳入出發(fā)的時(shí)間,打印回家的方式以及到家的時(shí)間,有兩種回家方式:開車、走路。其中開車需要1小時(shí),走路需要3小時(shí)。

功能分析:

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

變化部分:

輸出回家方式,根據(jù)出發(fā)時(shí)間,計(jì)算到家時(shí)間。

不變部分:

輸出到家時(shí)間。

1、定義回調(diào)函數(shù)指針

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

2、編寫come_home函數(shù)

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

3、實(shí)現(xiàn)具體的回調(diào)函數(shù)

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


 return arrival_time;
}


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


 return arrival_time;
}

4、main函數(shù)

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

5、輸出

98bf6b52-d132-11ee-a297-92fbcf53809c.png





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137267
  • 回調(diào)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    87

    瀏覽量

    11598

原文標(biāo)題:C語言回調(diào)函數(shù):降低程序耦合性

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一文詳解C語言函數(shù)指針與調(diào)函數(shù)

    在講調(diào)函數(shù)之前,我們需要了解函數(shù)指針。
    發(fā)表于 10-19 09:34 ?806次閱讀

    C語言里面的函數(shù)指針和調(diào)函數(shù)

    在講調(diào)函數(shù)之前,我們需要了解函數(shù)指針。
    發(fā)表于 12-13 10:28 ?651次閱讀

    C語言使用回調(diào)函數(shù)模擬委托與反射

    函數(shù)C語言的核心概念。主調(diào)函數(shù)(caller)調(diào)用被調(diào)函數(shù)(callee)是一般的調(diào)用關(guān)系,如
    發(fā)表于 08-03 16:12 ?482次閱讀

    C 語言調(diào)函數(shù)詳解

    C 語言調(diào)函數(shù)詳解什么是調(diào)
    發(fā)表于 04-08 10:36

    c語言調(diào)函數(shù)的作用是什么,怎么使用

    知道怎么寫回調(diào)函數(shù)也根本就搞不懂它們?cè)趯?shí)際產(chǎn)品中也有什么用,什么時(shí)候用。所以這節(jié)課我們會(huì)以程序架構(gòu)的需求為出發(fā)點(diǎn),講解
    發(fā)表于 11-30 06:09

    C語言調(diào)函數(shù)學(xué)習(xí)

    對(duì)指針的應(yīng)用是C語言編程的精髓所在,而回調(diào)函數(shù)就是C語言里面對(duì)
    發(fā)表于 05-27 09:44 ?7216次閱讀

    LabWindows/CVI 程序 調(diào)函數(shù)設(shè)計(jì)

    調(diào)函數(shù)是系統(tǒng)框架設(shè)計(jì)中非常重要的一種手段,所謂調(diào)函數(shù)(callback )是指一個(gè)通過
    發(fā)表于 05-03 16:54 ?1.1w次閱讀
    LabWindows/CVI <b class='flag-5'>程序</b> <b class='flag-5'>回</b><b class='flag-5'>調(diào)</b><b class='flag-5'>函數(shù)</b>設(shè)計(jì)

    C語言函數(shù)調(diào)函數(shù)

    來源:嵌入式客棧 1 什么是調(diào)函數(shù)?首先什么是調(diào)? 我的理解是:把一段可執(zhí)行的代碼像參數(shù)傳
    的頭像 發(fā)表于 09-11 09:57 ?4163次閱讀

    c語言調(diào)函數(shù)的使用及實(shí)際作用詳解

    知道怎么寫回調(diào)函數(shù)也根本就搞不懂它們?cè)趯?shí)際產(chǎn)品中也有什么用,什么時(shí)候用。所以這節(jié)課我們會(huì)以程序架構(gòu)的需求為出發(fā)點(diǎn),講解
    發(fā)表于 11-20 19:51 ?13次下載
    <b class='flag-5'>c</b><b class='flag-5'>語言</b><b class='flag-5'>回</b><b class='flag-5'>調(diào)</b><b class='flag-5'>函數(shù)</b>的使用及實(shí)際作用詳解

    C語言使用回調(diào)函數(shù)模擬委托與反射

    函數(shù)C語言的核心概念。主調(diào)函數(shù)(caller)調(diào)用被調(diào)函數(shù)(callee)是一般的調(diào)用關(guān)系,如
    的頭像 發(fā)表于 03-14 10:19 ?1335次閱讀

    詳解調(diào)函數(shù)的概念及使用步驟

    調(diào)函數(shù)就是一個(gè)被作為參數(shù)傳遞的函數(shù)。在C語言中,
    的頭像 發(fā)表于 05-26 15:20 ?4077次閱讀

    函數(shù)指針和調(diào)函數(shù)的使用方法

    了解開發(fā)語言的朋友應(yīng)該都會(huì)對(duì)調(diào)函數(shù)有所了解,在很多的程序開發(fā)語言中都能看到
    的頭像 發(fā)表于 04-10 15:08 ?1126次閱讀

    C語言技巧之調(diào)函數(shù)

    在講調(diào)函數(shù)之前,我們需要了解函數(shù)指針。
    的頭像 發(fā)表于 04-18 11:50 ?817次閱讀

    C語言|調(diào)函數(shù)的不同用法

    調(diào)函數(shù)是個(gè)高級(jí)操作技巧,也是日常項(xiàng)目中常常使用到的技能。之所以說調(diào)函數(shù)是個(gè)高級(jí)操作技巧,是因
    發(fā)表于 07-10 10:34 ?1337次閱讀

    調(diào)函數(shù)(callback)是什么?調(diào)函數(shù)的實(shí)現(xiàn)方法

    調(diào)函數(shù)是一種特殊的函數(shù),它作為參數(shù)傳遞給另一個(gè)函數(shù),并在被調(diào)用函數(shù)執(zhí)行完畢后被調(diào)用。
    發(fā)表于 03-12 11:46 ?3073次閱讀