这些struct和typedef定义意味着什么?

时间:2012-08-30 08:27:38

标签: c struct typedef

我有以下代码,它工作正常并且已经使用了很长一段时间......但我不知道它意味着什么。

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)

2 个答案:

答案 0 :(得分:1)

:3代表bit field。不过,我不确定它是否重要,因为我认为sizeof(struct event_param)几乎肯定会是12个字节。

所以这里发生的是创建了一个SV_DRIVER_EVENT_LASTevent_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。此结构包含位字段及其排列方式   直到我们知道是否有任何编译器指令才确定   避免填充。