簡體   English   中英

這些struct和typedef定義是什么意思?

[英]What do these struct and typedef definitions mean?

我有以下代碼,可以正常工作,並且已經使用了一段時間了……但是我不知道這意味着什么。

struct event_param
{
    int task:3;
    int param1;
    int param2;
};

#define SV_DRIVER_EVENTS_MASK_SIZE (SV_DRIVER_EVENT_LAST*sizeof(struct event_param))
typedef struct event_param driver_event_mask[SV_DRIVER_EVENTS_MASK_SIZE];
typedef driver_event_mask DriverEventMask;
  • driver_event_mask代表什么?
  • 為什么數組內有sizeof(struct event_param)

:3表示位字段 不過我不確定這有多重要,因為我認為sizeof(struct event_param)仍然幾乎肯定是12個字節。

所以,這里所發生的是數組SV_DRIVER_EVENT_LASTevent_param創建結構。 但是我也希望在這里不需要sizeof(struct event_param) -數組的長度是由它包含的單元數而不是字節來定義的。

1. driver_event_mask就是它所說的。 表示SV_DRIVER_EVENTS_MASK_SIZE結構event_param項的數組的類型。

2. sizeof(struct event_param)在這里不是必需的,但不會造成傷害(即不會導致錯誤),因為這僅意味着您分配的內存是實際需要的12倍。

如何在c中typedef strcuts數組?

您的問題中已經顯示了如何定義,為什么要參考以下內容:

如果typedef名稱表示可變長度數組類型,則在定義typedef名稱時(而不是每次使用時),數組的長度是固定的:

DriverEventMask代表什么

DriverEventMask代表結構event_param

為什么有 sizeof(struct event_param)

這樣SV_DRIVER_EVENTS_MASK_SIZE將代表結構event_param的大小。 該結構包含位字段,在我們知道是否有任何編譯器指令可避免填充之前,不確定其排列方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM