当前位置: 首页 > 新闻中心 > 乐球吧nba在线直播
返回
列表

函数指针有啥用?有啥意义?

发表时间: 2024-01-19 作者: 乐球吧nba在线直播

  有些东西就是这样,自己明白该怎么用,用在哪,但如果一下子让我很通俗易懂地表达出来,脑子就卡壳了。

  昨晚夜深人静,我想到了正好我们wifi报警主机那个项目有个例子,很适合去深刻理解。

  这个项目我们对接的是涂鸦云平台,然后涂鸦云提供SDK,我们应该移植到我们自己的项目里去。

  在移植的过程中,我们应该去更改他们SDK里面的代码,我觉得这点是可以优化的。

  比如个人会使用的涂鸦云提供的WiFi模组,通过串口和我们单片机连接,有一个通讯协议,但是涂鸦云帮我们做好了这个通讯协议的代码,所以会提供一个SDK给我们。

  我们在使用SDK的时候,需要修改SDK的代码,把我们这款单片机的串口发送一个字节的函数,移植到SDK里面去。

  如果采用这样的形式,有一种功能实现不了,就是假设涂鸦云这个SDK要封库(lib文件),源码不开放,我们就没法把Hal_Wifi_SendByte放到protocol.c文件的usart_transmit_output函数里面去。

  是不是会有这样的一个问题?这在某种程度上预示着,protocol.c必须开源,但是很多企业有一些核心代码,是商业机密,不能开放的,比如做导航的地图数据库。

  客户的技术水平层次不齐,如果有些基础稍微差点的,把SDK改乱了,这样会增加涂鸦云技术上的支持的人工成本。

  所以,如果我去做,最理想的是不让客户改SDK的任何代码,你就直接按照我的方法和流程,调用函数用。

  第三步:修改protocol.c文件下uart_transmit_output函数,直接调用刚刚定义的函数指针变量Uart_transmit_outputCBS,记住调用前,必须要指针不为空的条件判断,否则,如果指针调用前没正确指向,会造成指针异常,程序死机。

  第四步:在protocol.c文件下编写Uart_transmit_outputCBS函数指针的注册函数,也就是让这个函数指针变量指向一个地址的函数接口。

  为什么要单独写个函数呢?因为我们理想的情况下,是提供函数接口,给别的.c文件调用,而不是用全局变量的形式。

  这就是函数指针的作用,这样就能实现,客户不修改SDK代码,SDK也能调用客户工程下.c文件里的函数了。

  这些技巧不复杂,就像纱窗,有人指点一下,很快就捅破了,没人指点,可能很多年都领悟不了,这也是进阶架构师必须要掌握的技巧。

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

  ?  多谐振荡器是电子领域中一种常见的电路元件,它大多数都用在产生频率多样的信号,并可用于信号发生器、测试仪器等设备

  区别? LM324和LM324DR都是四个运算放大器集成电路,它们的外观和脚位也几乎相同。但是,它们之间还是

  区别? Rockchip是一家致力于提供高质量芯片解决方案的公司。它的RK3566芯片是一款高性能、低功耗的处理器,适用于各种应用领域。Rockchip的RK3566

  什么区别? 随着人工智能技术在各行各业的广泛应用,人类对于AI芯片与CPU的区别越来越感兴趣。虽然它们都是计算机芯片,但它们在设计和应用方面有着很大

  ,则编译时系统就会为这段代码分配一段存储空间,这段存储空间的首地址称为

  东东?朋友是做美容的,她从这家 买了一个叫【工业手机】的东东,连在电脑上,给老顾客发短信搞促销,最近生意比较火。工业手机是个

  在Linux内核和C语言开发中用的非常多,而且在设计操作系统的时候也会用到,因此这里将详细讲解

  电感产品品类很多,对于非专业电感从业人员很难搞清楚。即便是电感行业的从业人员,也不一定能够完全就说的很清楚。比如最近这个被问题的特别都的问题——贴片电感和功率电感

  对于PCB工程师来说,一款好用的PCB设计软件是很重要的,直接影响到高效完成PCB设计作业。那么pcb板设计

  鸿蒙系统2.0已正式上线,也有许多用户使用鸿蒙系统一段时间了,那么我们接下来盘点下鸿蒙系统

  区别?原来二者...资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望有机会能够帮助到广大的电子工程师们。