typedef结构用于定义另一个结构?

时间:2013-12-26 14:35:58

标签: types initialization embedded structure typedef

我是编码新手,尤其是嵌入式系统。我想问一下这段代码是什么意思?

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主机。

1 个答案:

答案 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 ;