好的,讓我再解釋一下。我有一個指向結構AB
類型struct1
的指針結構裏面有一個指向CD
類型struct2
的另一個結構的指針,並且struct2
的定義有一些函數原型,包括Func(param)
。如果有人能幫助我理解一點,我會非常感謝。這在C中意味着什麼? AB-> CD-> 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(無效)的定義,我無法找到它做什麼。
這是否幫助? http://stackoverflow.com/questions/2575048/arrow-operator-usage-in-c – chris
顯示你有問題的代碼,不要試圖用散文來描述它。 –
我不認爲這個問題應該被關閉爲過於局部化:通過嵌入在'struct'中的函數指針調用函數的語法真的很混亂,特別是如果你熟悉C++。 – dasblinkenlight