我是编码新手,尤其是嵌入式系统。我想问一下这段代码是什么意思?
typedef struct _Device_cb
{
USBH_Status (*Init) (USB_OTG_CORE_HANDLE *pdev ,
USBH_DeviceProp_TypeDef *hdev);
void (*DeInit) (USB_OTG_CORE_HANDLE *pdev , USBH_DeviceProp_TypeDef
*hdev);
USBH_Status (*Requests)(USB_OTG_CORE_HANDLE *pdev,
USBH_DeviceProp_TypeDef;*hdev);
USBH_Status (*Machine) (USB_OTG_CORE_HANDLE *pdev ,
USBH_DeviceProp_TypeDef,*hdev);
}
USBH_Class_cb_TypeDef;
我知道这是一个结构名称USBH_Class_cb_TypeDef
令我困惑的是将此结构与另一个结构/数组结合使用的代码。这就是我的意思。
USBH_Class_cb_TypeDef USBH_HID_cb =
{
USBH_HID_InterfaceInit,
USBH_HID_InterfaceDeInit,
USBH_HID_ClassRequest,
USBH_HID_Handle
};
先前的USBH_Class_cb_TypeDef
结构是否用于将类型分配给在名为USBH_HID_cb
的下一个结构/数组中找到的条目?
就像说例如u8 USBH_HID_InterfaceInit,比如为变量分配特定类型吗?
另外,用括号括起来的指针对我来说很困惑,特别是因为另一件事(或函数中使用的变量)跟随它。
顺便说一下,我从有关USB OTG的文档中读到了这些(代码),因为我想将我的STM32F4Discovery配置为USB网络摄像头的USB主机。
答案 0 :(得分:0)
第二个代码片段不是另一个结构,而是带有初始化的USBH_Class_cb_TypeDef
的实例的声明。
USBH_Class_cb_TypeDef
是一种类型,而USBH_HID_cb
是类型为USBH_Class_cb_TypeDef
的变量。 USBH_HID_cb
的前四个成员(恰好是函数指针)由函数初始化:
USBH_HID_InterfaceInit,
USBH_HID_InterfaceDeInit,
USBH_HID_ClassRequest,
USBH_HID_Handle
为了更好地了解正在发生的事情,请考虑以下更简单的示例:
typedef struct
{
int x ;
} tMyStruct ;
tMystruct a = { 0 } ; // create instance tMystruct with member x = 0 ;