我有以下代码,它工作正常并且已经使用了很长一段时间......但我不知道它意味着什么。
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)
?答案 0 :(得分:1)
:3
代表bit field。不过,我不确定它是否重要,因为我认为sizeof(struct event_param)
几乎肯定会是12个字节。
所以这里发生的是创建了一个SV_DRIVER_EVENT_LAST
个event_param
结构的数组。但是我也希望这里不需要sizeof(struct event_param)
- 数组的长度是以它包含的单位数来定义的,而不是以字节为单位。
1。 driver_event_mask
就是这么说的。一种表示SV_DRIVER_EVENTS_MASK_SIZE struct event_param项数组的类型。
2。 sizeof(struct event_param)
,但不会受到伤害(即不会导致错误)因为它只是意味着您分配的内存大约是实际内存的12倍需要。
答案 1 :(得分:-2)
如何在c?
中输入def strcuts数组如何定义已经在您的问题中显示,为什么在下面提到: -
如果typedef名称表示可变长度数组类型,则长度为 数组在定义typedef名称时是固定的,而不是每个 时间使用:
DriverEventMask
代表什么
DriverEventMask表示struct event_param
为什么有 sizeof(struct event_param)
这样SV_DRIVER_EVENTS_MASK_SIZE将表示struct的大小 event_param。此结构包含位字段及其排列方式 直到我们知道是否有任何编译器指令才确定 避免填充。