【发布时间】:2012-10-26 21:30:33
【问题描述】:
好的,让我再解释一下。我有一个指向结构AB 类型struct1 的指针,在结构内部有一个指向另一个名为CD 的struct2 结构的指针,struct2 的定义有一些函数原型,包括Func(param)。如果有人能帮助我理解一点,我将非常感激。
是的,代码是针对微控制器中的 USB 主机的,我没有添加代码,因为它可以解决问题,但就是这样,
电话是:
void USBHOST_Process(USB_OTG_CORE_HANDLE *pdev , USBH_HOST *phost){
...
if (phost->usr_cb->UserInput() == USBH_USR_RESP_OK){
...
}
...
}
typedef struct _Host_TypeDef
{
HOST_State gState; /* Host State Machine Value */
HOST_State gStateBkp; /* backup of previous State machine value */
ENUM_State EnumState; /* Enumeration state Machine */
CMD_State RequestState;
USBH_Ctrl_TypeDef Control;
USBH_Device_TypeDef device_prop;
USBH_Class_cb_TypeDef *class_cb;
USBH_Usr_cb_TypeDef *usr_cb;
} USBH_HOST, *pUSBH_HOST;
typedef struct _USBH_USR_PROP
{
void (*Init)(void); /* HostLibInitialized */
void (*DeInit)(void); /* HostLibInitialized */
void (*DeviceAttached)(void); /* DeviceAttached */
void (*ResetDevice)(void);
void (*DeviceDisconnected)(void);
void (*OverCurrentDetected)(void);
void (*DeviceSpeedDetected)(uint8_t DeviceSpeed); /* DeviceSpeed */
void (*DeviceDescAvailable)(void *); /* DeviceDescriptor is available */
void (*DeviceAddressAssigned)(void); /* Address is assigned to USB Device */
void (*ConfigurationDescAvailable)(USBH_CfgDesc_TypeDef *,
USBH_InterfaceDesc_TypeDef *,
USBH_EpDesc_TypeDef *);
/* Configuration Descriptor available */
void (*ManufacturerString)(void *); /* ManufacturerString*/
void (*ProductString)(void *); /* ProductString*/
void (*SerialNumString)(void *); /* SerialNubString*/
void (*EnumerationDone)(void); /* Enumeration finished */
USBH_USR_Status (*UserInput)(void);
int (*UserApplication) (void);
void (*DeviceNotSupported)(void); /* Device is not supported*/
void (*UnrecoveredError)(void);
}
USBH_Usr_cb_TypeDef;
现在我明白了它的作用,但是我找不到 UserInput(void) 的定义我找不到它的作用。
【问题讨论】:
-
显示你有疑问的代码,不要试图用散文来描述。
-
我认为这个问题不应该因为过于本地化而结束:通过嵌入在
struct中的函数指针调用函数的语法确实令人困惑,尤其是如果您熟悉 C++。
标签: c