小弟最近在玩stm32,慢慢发现自己在C语言,尤其是对指针和结构体的理解方面有很多问题,如下是stm32-USB Device中的一段函数,恳请大神不惜赐教~~~
typedef struct _DEVICE_PROP
{
void (*Init)(void);//以这个函数指针为例:这个指针包含了(*Init)(void)这个函数的入口地址
void (*Reset)(void);
void (*Process_Status_IN)(void);
void (*Process_Status_OUT)(void);
RESULT (*Class_Data_Setup)(uint8_t RequestNo);
RESULT (*Class_NoData_Setup)(uint8_t RequestNo);
RESULT (*Class_Get_Interface_Setting)(uint8_t Interface, uint8_t AlternateSetting);
uint8_t* (*GetDeviceDescriptor)(uint16_t Length);
uint8_t* (*GetConfigDescriptor)(uint16_t Length);
uint8_t* (*GetStringDescriptor)(uint16_t Length);
void* RxEP_buffer;
uint8_t MaxPacketSize;
} DEVICE_PROP;//按小弟理解:这里的DEVICE_PROP是一种数据类型(例如char类型),该数据类型包含很多函数指针而已~这样理解正确吗???
DEVICE_PROP Device_Property =
{//这里DEVICE_PROP类型的Device_Propety,我是把它理解成结构体变量?还是该理解成结构体指针(地址)?
MASS_init,
MASS_Reset,//这里的地址与上面的函数指针一一对应???
MASS_Status_In,
MASS_Status_Out,
MASS_Data_Setup,
MASS_NoData_Setup,
MASS_Get_Interface_Setting,
MASS_GetDeviceDescriptor,
MASS_GetConfigDescriptor,
MASS_GetStringDescriptor,
0, 0x40//那这里的0,0x40该如何理解?请大神指教~~~
}; |