[英]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_LAST
的event_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.