函数指针 int (*add)( )

原文

首先它是一个指针,一个指向函数的指针,在内存空间中存放的是函数的地址;

复制代码
int Add(int x,int y)
{
    return x+y;
 }
int main()
{
    printf("%p\n",&Add);//打印一下函数Add()的地址
    printf("%p\n",Add);//数组名等于数组首元素地址,那函数名是等于函数地址吗? ->等于!
    return 0;
}
复制代码

 

void Add(int x, int y){
return x+y;}
int main(){
int (*pf)(int,int)=&Add;
int ret=(*pf)(3,5);

 处理底层硬件和操作系统功能:在底层编程中,函数指针常常用于与硬件和操作系统功能进行交互。通过将函数指针传递给特定的底层接口,可以让应用程序与硬件或操作系统进行通信和控制

 

问题,需要用把函数Hal_Wifi_SendByte放到涂鸦云SDK  protocol.c文件的usart_transmit_output函数里面去?

在protocol.h文件下自定一个函数指针类型pUart_transmit_output

在protocol.c定义一个函数指针变量 

pUart_transmit_output    Uart_transmit_outputCBS;

修改protocol.c文件下uart_transmit_output函数

 在protocol.c文件下编写Uart_transmit_outputCBS函数指针的注册函数

 在protocol.h文件下声明下Uart_transmit_outputCBSRegister函数

 

达到目标:

Protocol.c文件下,调用uart_transmit_outputCBS函数指针时,等同于调用hal_usart.c的hal_Wifi_SendByte函数

客户不修改SDK代码,SDK也能调用客户工程下.c文件里的函数了。

 

posted @   磕伴  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示