c - 如何将函数指针作为参数传递?

标签 c pointers

我有两个函数定义

void USART_puts(USART_TypeDef* USARTx, volatile char *s)
{
 .....
}


void send_packet(char op, unsigned char *data, unsigned char len) 
{
....
}

现在我已经为 send_packet(char,unsigned char*,unsigned char) 创建了一个函数指针作为

void (*send_packet)(char,unsigned char*,unsigned char);

我想像这样传递这个函数指针

 USART_Puts(USART1,send_packet)    

但是我得到一个错误“send_packet * 类型的参数与 volatile char * 类型不兼容” 我可以从错误中了解到两个参数不匹配。但是谁能告诉我如何传递这个函数指针?

最佳答案

USART_Puts需要有一个函数指针类型的参数。

void USART_puts(USART_TypeDef* USARTx, void (*s)(char,unsigned char*,unsigned char))

send_packet 定义为函数后定义为指针是不必要的。两个这样的同名声明甚至不应该共存。

关于c - 如何将函数指针作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27221225/

相关文章:

c++ - 从数组指针获取奇怪的数字

c - 文件指针在传递给函数时表现不同。为什么?

c - 自动在线法官拒绝我的数学难题解决方案

c - 如何从文件中逐行读取?

c - 如果 char 是一个字节,这怎么不是未定义的行为

带有段错误的客户端服务器代码

c - 比较指针与静态变量的行为是什么?

C - fscanf 适用于字符指针,但不适用于双字符指针?

c++ - 接受参数的函数指针

c - C 中的基本链表