[英]What does the following C code do, = { }
下面的代碼包含在 USB 驅動程序的 STMicroelectronics C 代碼中。 我試圖遵循(理解)這是如何工作的,我承認我的 C 編程並不強。
我的問題是/是什么
USBD_Interface_fops_FS =
{ xxxxx }
???
我在 K & R 中找不到,在類似的示例中使用了“=”賦值運算符。
typedef struct _USBD_CDC_Itf
{
int8_t (* Init) (void);
int8_t (* DeInit) (void);
int8_t (* Control) (uint8_t, uint8_t * , uint16_t);
int8_t (* Receive) (uint8_t *, uint32_t *);
}USBD_CDC_ItfTypeDef;
static int8_t CDC_Init_FS (void);
static int8_t CDC_DeInit_FS (void);
static int8_t CDC_Control_FS (uint8_t cmd, uint8_t* pbuf, uint16_t length);
static int8_t CDC_Receive_FS (uint8_t* pbuf, uint32_t *Len);
USBD_CDC_ItfTypeDef USBD_Interface_fops_FS =
{
CDC_Init_FS,
CDC_DeInit_FS,
CDC_Control_FS,
CDC_Receive_FS
};
它是結構初始化語法。 它只是將結構中的四個函數指針設置為四個命名函數。
結構初始化。
這個:
USBD_CDC_ItfTypeDef USBD_Interface_fops_FS =
{
CDC_Init_FS,
CDC_DeInit_FS,
CDC_Control_FS,
CDC_Receive_FS
};
只是一種更有效的方法:
USBD_CDC_ItfTypeDef USBD_Interface_fops_FS;
USBD_Interface_fops_FS.Init = CDC_Init_FS;
USBD_Interface_fops_FS.DeInit = CDC_DeInit_FS;
USBD_Interface_fops_FS.Control = CDC_Control_FS;
USBD_Interface_fops_FS.Receive = CDC_Receive_FS;
我確信這自 ANSI C 89 以來就已經存在了。我不知道他們是否在 K & R 中進行了結構初始化...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.