"uint8_t"类型的参数与"uint8_t*"类型的参数不兼容

Pan*_*oul 2 c embedded pointers keil

我正在尝试在Keil上为STM32F4-Discovery 编译USB HID示例代码.此代码允许我向称为"USB HID Demonstrator"的软件发送和接收消息.

但是我的USBD_HID_DataOut功能有问题.这条线:

USB_OTG_ReadPacket((USB_OTG_CORE_HANDLE*)pdev, *Buffer, HID_OUT_PACKET);

给我一个错误:

错误#167:类型"uint8_t"的参数与"uint8_t*"类型的参数不兼容

当我压缩*Buffer,代码编译但似乎不起作用(收到的缓冲区值与预期的不匹配,但我可能会误解)并且实际上第二个参数USB_OTG_ReadPacket必须是指针所以我不要不明白为什么会出现这种错误.

Buffer变量被定义为如下:uint8_t Buffer[6];

那么编译器有问题吗?我是否必须处理将此项目代码复制到Keil的特殊问题,因为它最初是为Atollic创建的?

或者链接中是否存在错误?

Nik*_* C. 5

传递没有意义*Buffer,因为这意味着相同Buffer[0].你为什么要写*Buffer而不是Buffer[0]先写?Buffer甚至没有被声明为指针,那你为什么要取消引用呢?(你可以,但它看起来不正确.)

如果函数需要一个指针,那么传递Buffer是正确的,因为它意味着相同&Buffer[0].

试着澄清你的问题.这是什么,你想传递给函数?你想将它传递给Buffer数组中的第一个uint8_t元素吗?在这种情况下,你想传递Buffer[0]*Buffer(两者都意味着相同的东西.)或者你想传递指向数组的指针?在这种情况下,通过Buffer&Buffer[0](两者都是等价的.)