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

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

3天内不再提示

浅谈嵌入式软件开发中函数指针的实现

FPGA之家 来源:CSDN技术社区 作者:码农爱学习 2021-04-15 11:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式软件开发中,一个项目往往需要多人协作完成。

比如A需要完成项目的整体逻辑功能,而整个逻辑功能包含许多具体的小功能,但A又没有时间或能力来实现这些小功能,这时可以让B来协助实现函数内部的功能。

通常的思路是,B写好某个函数后,A直接通过B声明的函数调用即可。但这会有一些问题,例如B写好函数之后,A只能使用B声明的函数名来使用,假如B声明的函数名的命名规则很不符合A的口味,A用起来就很不爽,哈哈。那这样怎么办呢?聪明的A可以自己再声明一个自己喜欢的函数名,并通过函数指针传递的功能来获得B的功能。

下面来讲一下具体实现:

1声明函数指针-A负责

比如A需要一个求和功能的函数,但他没时间写,他可以自己先声明一个函数指针:

//a中声明一个指针函数,其函数内部的功能需要另一个人b来完成 int (*mysum)(int, int)=0;

这个看起来和普通的函数声明很像,都有函数名,返回值类型与参数类型,但该函数名前有一个星号,表示它是函数指针,另外其函数实体可以先初始化为0。

2函数指针赋值-A负责

这一步相当于函数指针初始化,也相当于函数注册,就是将A声明的函数指针,通过指针赋值的方式,来获得B实现的函数功能,相当于是给B写的函数套上一层A的壳:

//初始化指针函数,传入 b写的函数的函数名,//通过函数指针赋值,main中声明的函数,就可以使用b写的函数功能了 int init_mysum_func(int(*func_handle)(int,int)){ mysum = func_handle; return 0;}

3函数的具体实现-B负责

B这个人只要按照A声明的函数指针的格式(返回值与参数类型一致,函数名可以随意)完成函数内部功能即可,这里以简单的求和为例,在b.h文件中,B实现的功能如下:

int sum_by_b(int a, int b){ return a+b;}

4项目整理逻辑-A负责

项目逻辑很简单,就是求1+2的值,这时A在使用自己声明的mysum之前,初始化(注册)一下该函数(将B写的函数“sum_by_b”套上A写的壳“mysum”),然后就可以使用了,使用实例如下:

int main(){ int res = 0;

init_mysum_func(sum_by_b);//初始化指针函数, 将 b完成的函数功能赋予a声明的函数

res = mysum(1,2);//使用a声明的求和函数进行求和,其内部实现其实的b完成的

printf(“mysum(1,2) = %d”,res);

return 0;}

测试结果:

mysum(1,2) = 3--------------------------------Process exited after 0.007424 seconds with return value 0请按任意键继续。 . 。
编辑:lyn

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

    关注

    5186

    文章

    20145

    浏览量

    328753
  • 函数指针
    +关注

    关注

    2

    文章

    57

    浏览量

    4113

原文标题:嵌入式中的合作开发——函数指针

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32嵌入式软件开发的必备知识

    嵌入式软件开发作为计算机科学和电子工程的交叉领域,要求开发人员具备一系列的专业知识和技能。 而基于CW32的嵌入式软件开发必备知识包括以下
    发表于 11-28 07:48

    C语言在嵌入式开发的应用

    C 语言在汽车电子控制系统开发的主导地位。 2、设备驱动程序 设备驱动程序是嵌入式系统连接硬件和软件的桥梁,它负责
    发表于 11-21 08:09

    嵌入式达到什么水平才能就业?

    工具定位问题具备嵌入式软件模块化设计能力:能按功能划分代码模块,编写规范的头文件与源文件,实现模块间低耦合调用会使用Git 进行版本管理:能提交代码、解决冲突、回滚版本,熟悉敏捷开发
    发表于 09-15 10:20

    2025“芯原杯”全国嵌入式软件开发大赛圆满落幕

    此前,2025年7月20日至26日,第四届“芯原杯”全国嵌入式软件开发大赛决赛在海口成功举办。
    的头像 发表于 08-06 09:51 1099次阅读

    嵌入式软件开发常用的软件有哪些?

    对于初学嵌入式的朋友们,会想要了解嵌入式软件开发常用的软件有些,有什么用。那么看以下常用的软件介绍。 1.Visual Studio Cod
    发表于 07-03 17:06

    如何成为一名嵌入式软件工程师?

    、Java等)和软件开发工具,还需要对硬件的工作原理有深入的理解。 在团队嵌入式软件工程师往往扮演着核心角色,他们的工作直接关系到产品的性能、稳定性和用户体验。 02掌握核心技
    发表于 04-15 14:37

    函数指针的六个常见应用场景

    函数指针嵌入式开发中有着广泛的应用,它让代码更加灵活,减少冗余,提高可扩展性。很多时候,我们需要根据不同的情况动态调用不同的函数,而函数
    的头像 发表于 04-07 11:58 1120次阅读
    <b class='flag-5'>函数</b><b class='flag-5'>指针</b>的六个常见应用场景

    嵌入式系统开发圣经【干货】

    内容包括:嵌入式系统的介绍、嵌入式SoC硬件系统概论、嵌入式系统软件开发。适用于产品主管、系统设计分析人员及欲进入该领域的工程师。本资料详细的理论讲解,广泛深入地分析相关的
    发表于 03-12 13:58

    IAR发布云端平台,助力现代嵌入式软件开发团队

    该平台为嵌入式软件开发人员提供前所未有的自由度与灵活性,助力开发团队在工具选择和日常工作流实现更高效的协作与创新。
    的头像 发表于 03-12 11:56 603次阅读

    嵌入式软件工程师就业好不好?

    、智能医疗设备等,都离不开嵌入式软件的支持。预计2025年,物联网设备的数量将呈爆发式增长,这将为嵌入式软件开发工程师带来大量的就业机会。 薪资待遇具有竞争力 由于
    发表于 02-20 10:19

    打破技术壁垒!AWFlow让嵌入式软件开发触手可及

    嵌入式软件开发,创意和技术创新常常难以融合。AWFlow通过其图形化组态方法,利用拖拽节点构建业务流程图,帮助用户实现奇思妙想。在嵌入式
    的头像 发表于 02-10 16:44 701次阅读
    打破技术壁垒!AWFlow让<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>触手可及

    嵌入式机器学习的应用特性与软件开发环境

    设备和智能传感器)上,这些设备通常具有有限的计算能力、存储空间和功耗。本文将您介绍嵌入式机器学习的应用特性,以及常见的机器学习开发软件开发环境。 嵌入式机器学习的应用特性与优势 由于
    的头像 发表于 01-25 17:05 1209次阅读
    <b class='flag-5'>嵌入式</b>机器学习的应用特性与<b class='flag-5'>软件开发</b>环境

    嵌入式软件开发符合ISO 26262 功能安全标准

    )的符合性呢?现在,您可以通过 “如何遵守 ISO 26262 标准 ”白皮书在 ISO 26262 合规性方面抢占先机。了解如何以最佳方式加快嵌入式软件开发符合
    发表于 01-15 12:04 3次下载

    嵌入式系统开发的测试方法 嵌入式系统开发与AI结合应用

    嵌入式系统开发的测试方法 嵌入式系统开发是一个复杂的过程,涉及到硬件和软件的紧密结合。测试是确
    的头像 发表于 12-09 10:22 2031次阅读

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备。这些系统的关键特点是它们与硬件的紧密集成
    的头像 发表于 12-09 09:38 1466次阅读