良许Linux教程网 干货合集 嵌入式 | 使用回调函数降低耦合

嵌入式 | 使用回调函数降低耦合

一、前言

耦合性是衡量程序结构中各个模块相互关联程度的指标。它取决于模块接口的复杂程度、调用方式以及通过接口传递的信息。

在编写代码时,隔离变化和降低复杂度是两个核心点,而解耦是实现这两个目标的重要手段。

以下是两篇关于回调函数的不错文章:

C语言、嵌入式重点知识:回调函数

一个最简单的log模块

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

问题描述:实现回家函数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\n", arrival_time);   /* 不变部分:打印到家时间 */
}

3、实现具体的回调函数

/* 开车回家 */
int on_drive(void* ctx, int departure_time) {
 int  arrival_time = departure_time + 1; /* 计算开车回家时间 */
 printf("drive\n");      /* 打印回家方式 */

 return arrival_time;
}

/* 走路回家 */
int on_walk(void* ctx, int departure_time) {
 int  arrival_time = departure_time + 3; /* 计算走路回家时间 */
 printf("walk\n");      /* 打印回家方式 */

 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、输出

image-20230911221522074
image-20230911221522074

温馨提示

由于微信公众号近期改变了推送规则,如果您想经常看到我们的文章,可以在每次阅读后,在页面下方点一个「赞」或「在看」,这样每次推送的文章才会第一时间出现在您的订阅列表里。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部