我正在尝试在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/