我正在尝试在Keil上编译USB HID example code以进行STM32F4-Discovery。此代码使我能够与称为“ 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];

那么编译器有问题吗?自从最初为Atollic创建项目代码并将其复制到Keil以来,我是否需要处理特殊问题?

还是链接中仅仅是一个错误?

最佳答案

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

如果函数需要一个指针,则传递Buffer是正确的,因为它的含义与&Buffer[0]相同。

尝试澄清您的问题。您要传递给函数什么?您是否要将其传递给Buffer数组中的第一个uint8_t元素?在这种情况下,您想传递Buffer[0]*Buffer(两者表示相同的意思。)还是要传递指向数组的指针?在这种情况下,请传递Buffer&Buffer[0](两者等效。)

关于c - “uint8_t”类型的参数与“uint8_t *”类型的参数不兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13445917/

10-12 06:23
查看更多