0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用C语言回调函数降低程序耦合性呢?

STM32嵌入式开发 来源:CSDN 2024-02-22 11:34 次阅读

一、前言

耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。 编写代码有两个核心点:隔离变化、降低复杂度,而解耦是达到这两个目标的重要手段。

二、使用回调函数降低耦合

问题描述:

实现回家函数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、输出

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





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136079
  • 回调函数
    +关注

    关注

    0

    文章

    87

    浏览量

    11541

原文标题:C语言回调函数:降低程序耦合性

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一文详解C语言函数指针与函数

    在讲函数之前,我们需要了解函数指针。
    发表于 10-19 09:34 772次阅读

    C语言里面的函数指针和函数

    在讲函数之前,我们需要了解函数指针。
    发表于 12-13 10:28 583次阅读

    C语言使用回函数模拟委托与反射

    函数C语言的核心概念。主调函数(caller)调用被函数(callee)是一般的调用关系,如
    发表于 08-03 16:12 459次阅读

    C 语言函数详解

    C 语言函数详解什么是
    发表于 04-08 10:36

    c语言函数的作用是什么,怎么使用

    知道怎么写回函数也根本就搞不懂它们在实际产品中也有什么用,什么时候用。所以这节课我们会以程序架构的需求为出发点,讲解
    发表于 11-30 06:09

    C语言函数学习

    对指针的应用是C语言编程的精髓所在,而回函数就是C语言里面对
    发表于 05-27 09:44 7193次阅读

    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><b class='flag-5'>函数</b>设计

    C语言函数函数

    来源:嵌入式客栈 1 什么是函数?首先什么是? 我的理解是:把一段可执行的代码像参数传
    的头像 发表于 09-11 09:57 4097次阅读

    c语言函数的使用及实际作用详解

    知道怎么写回函数也根本就搞不懂它们在实际产品中也有什么用,什么时候用。所以这节课我们会以程序架构的需求为出发点,讲解
    发表于 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'>调</b><b class='flag-5'>函数</b>的使用及实际作用详解

    C语言使用回函数模拟委托与反射

    函数C语言的核心概念。主调函数(caller)调用被函数(callee)是一般的调用关系,如
    的头像 发表于 03-14 10:19 1289次阅读

    详解函数的概念及使用步骤

    函数就是一个被作为参数传递的函数。在C语言中,
    的头像 发表于 05-26 15:20 3968次阅读

    函数指针和函数的使用方法

    了解开发语言的朋友应该都会对函数有所了解,在很多的程序开发语言中都能看到
    的头像 发表于 04-10 15:08 1059次阅读

    C语言技巧之函数

    在讲函数之前,我们需要了解函数指针。
    的头像 发表于 04-18 11:50 737次阅读

    C语言|函数的不同用法

    函数是个高级操作技巧,也是日常项目中常常使用到的技能。之所以说函数是个高级操作技巧,是因
    发表于 07-10 10:34 1247次阅读

    C++生成Dll与函数测试

    描述了VS环境下,通过C++生成dll的方法,测试函数
    的头像 发表于 08-29 16:05 1501次阅读
    <b class='flag-5'>C</b>++生成Dll与<b class='flag-5'>回</b><b class='flag-5'>调</b><b class='flag-5'>函数</b>测试