函数指针 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 @ 2023-12-26 15:42  磕伴  阅读(15)  评论(0编辑  收藏  举报