硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1480|回复: 16
收起左侧

[技术讨论] 软件里面根据端口不同,但实现的逻辑相同应该怎么去写?

  [复制链接]

33

主题

155

回帖

259

积分

高级会员

积分
259
发表于 2024-6-9 10:58:42 | 显示全部楼层 |阅读模式
有port A和port B,它们有各自的变量,但软件去处理它们的逻辑是相同的,

怎么去写好一点,便于后期修改和移植。有什么项目可以参考吗?
回复

使用道具 举报

25

主题

300

回帖

380

积分

高级会员

积分
380
发表于 2024-6-9 19:06:46 | 显示全部楼层
这种功能在C++中叫做泛型编程,在C中是难以实现的
回复

使用道具 举报

25

主题

300

回帖

380

积分

高级会员

积分
380
发表于 2024-6-9 19:07:51 | 显示全部楼层
在C++中这种功能叫做泛型编程,不考虑数据类型,但是在C中是难以实现的
回复

使用道具 举报

85

主题

798

回帖

1053

积分

至尊会员

积分
1053
发表于 2024-6-9 19:26:46 | 显示全部楼层
逻辑部分提炼出来,各自的变量通过参数传入
回复

使用道具 举报

33

主题

155

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2024-6-9 22:06:41 | 显示全部楼层
爱恋之燕 发表于 2024-6-9 19:07
在C++中这种功能叫做泛型编程,不考虑数据类型,但是在C中是难以实现的

用过C的连接符 ## ,可以实现吗?
回复

使用道具 举报

33

主题

155

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2024-6-9 22:06:48 | 显示全部楼层
庄永 发表于 2024-6-9 19:26
逻辑部分提炼出来,各自的变量通过参数传入

用过C的连接符 ## ,可以实现吗?
回复

使用道具 举报

85

主题

798

回帖

1053

积分

至尊会员

积分
1053
发表于 2024-6-9 22:49:00 | 显示全部楼层
可以,但是没有意义,会导致同样的逻辑多次展开,起不到优化的目的
回复

使用道具 举报

2

主题

6

回帖

12

积分

新手上路

积分
12
发表于 2024-6-11 07:50:28 | 显示全部楼层
采用回调函数不好吗?
回复

使用道具 举报

7

主题

158

回帖

179

积分

初级会员

积分
179
发表于 2024-6-11 08:09:58 | 显示全部楼层
if  
elseif
不够再叠他几十个,总够了吧, 不要想着啥算法,简单可靠是王道
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117513
QQ
发表于 2024-6-11 08:53:51 | 显示全部楼层
是不是类似emWin,不同显示屏有不同的接口实现文件,但可以将其都添加到工程,同时驱动多个不同类型的屏。
回复

使用道具 举报

356

主题

2180

回帖

3253

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3253
发表于 2024-6-11 09:01:03 | 显示全部楼层
用void*这种无类型的指针就可以了把? 进入A/B函数后,再进行数据类型转换。
回复

使用道具 举报

219

主题

1109

回帖

1776

积分

至尊会员

More we do, more we can do.

积分
1776
发表于 2024-6-11 09:01:05 | 显示全部楼层
以参数形式传入,复用代码。
回复

使用道具 举报

13

主题

39

回帖

78

积分

初级会员

积分
78
发表于 2024-6-11 09:49:07 | 显示全部楼层
独立的变量用结构体封装,共用的逻辑用函数封装,传递结构体指针就行。注意区分独立变量和共用全局变量,共用的全局变量要考虑竞争和重用问题,实在不行就全部独立,拿空间换。
回复

使用道具 举报

33

主题

155

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2024-6-11 10:26:56 | 显示全部楼层
eric2013 发表于 2024-6-11 08:53
是不是类似emWin,不同显示屏有不同的接口实现文件,但可以将其都添加到工程,同时驱动多个不同类型的屏。

类似两个接口同时处理的感觉
回复

使用道具 举报

4

主题

27

回帖

39

积分

新手上路

积分
39
发表于 2024-6-11 10:36:12 | 显示全部楼层
用结构体描述各自变量抽象成对象,函数入参带一个结构体
回复

使用道具 举报

4

主题

180

回帖

192

积分

初级会员

积分
192
发表于 2024-6-11 10:41:30 | 显示全部楼层
B站搜索“一点五编程”,他的方法可以实现,具体项目参考他的Github:https://github.com/wallacegibbon/generic-screen-painter
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
发表于 2024-7-27 23:55:05 来自手机 | 显示全部楼层
你说的是类似一套代码,用模拟SPI驱动多个相同的IC吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 09:06 , Processed in 0.045603 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表