좀 더 설명해 드리겠습니다. 내가 구조 AB
유형 struct1
유형의 struct2
struct2
과 struct2
의 정의라는 CD
라는 다른 구조에 대한 포인터가 struct1
형식에 대한 포인터가 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 (void)의 정의를 찾을 수 없습니다. 무엇을하는지 찾을 수 없습니다.
이 도움말을 수행
여기이 (also on ideone)이 어떻게 작동하는지 설명하는 간단한 예입니다? http://stackoverflow.com/questions/2575048/arrow-operator-usage-in-c – chris
질문이있는 코드를 표시하고 산문에서 설명하지 마십시오. –
이 질문은 너무 지역화 된 것처럼 닫히지 않아야한다고 생각하지 않습니다. 특히 struct에 내장 된 함수 포인터를 통해 함수를 호출하는 구문이 혼란 스럽습니다. 특히 C++에 익숙하다면 더욱 그러합니다. – dasblinkenlight