嵌入式功能指针的协同开发
嵌入式功能指针的协同开发
在嵌入式软件开发中,一个项目通常需要多人协作才能完成。例如,A需要完成项目的整体逻辑功能,并且整个逻辑功能包含许多特定的小功能,但是A没有时间或能力来实现这些小功能。
此时,B可以帮助实现功能的内部功能。通常的想法是,在B编写函数之后,A可以直接调用B声明的函数。
但是会出现一些问题。例如,在B编写函数之后,A只能使用B声明的函数名称。
如果B声明的函数名称的命名规则与A的口味不符,则A使用起来非常不舒服,哈哈 。那该怎么办呢? Smart 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声明(返回值与参数类型一致,函数名称就可以随意完成)函数的内部函数,这里以一个简单的求和为例,在bh文件中,由B实现的函数如下:int sum_by_b(int a,int b){return a + b;} 4项整理逻辑-负责项目逻辑的A很简单,就是找到1 + 2的值,然后A在使用由他自己声明的mysum之前,初始化(注册)该函数(将B编写的函数“ sum_by_b”放入B放入A编写的外壳“ mysum”中,然后可以使用,用法示例如下:int main(){int res = 0; init_mysum_func(sum_by_b); //初始化指针函数,并将b完成的函数分配给res = mysum(1,2)声明的函数; //使用求和函数de由a声明执行求和,该求和在内部实现由b完成的实际printf(“ mysum(1,2)=%d”,res);返回0;}测试结果:mysum(1,2)= 3 -------------------------------- 0.007424秒,返回值为0,请按任意键继续。
END来源:编码农民热爱学习,作者:xxpcb免责声明:本文经21ic授权发布,属于原作者,该平台仅提供信息存储服务。本文仅代表作者的个人观点,并不代表该平台的立场。
如有任何疑问,请与我们联系,谢谢!
