尝试定义1,024位(128字节)位字段时出错

Jim*_*ell 4 c bit-fields

我想定义一个大的位域,以便快速监视一个非常大的元素结构的状态.这是我到目前为止:

#define TOTAL_ELEMENTS 1021

typedef struct UINT1024_tag
{
   UINT8 byte[128];
} UINT1024;

typedef struct flags_tag
{
   UINT1024:TOTAL_ELEMENTS;
} flags_t;

当我尝试编译它时,我收到错误消息,"错误:位字段`<匿名>'具有无效类型"

位字段只能用于某些类型吗?我认为如果我定义了一个足够大的变量,那么我的应用程序所需的大量位域就可以被定义,因为位域必须不大于用于定义它的类型.

任何想法或建议将不胜感激.

And*_*oss 8

位字段必须适合单个int,不能使用任意大小.老实说,ANSI位域实现有点破碎.它也错过了许多其他东西,比如控制实际应用程序通常需要的填充和布局.我会考虑编写一些宏或访问器函数来抽象较大的大小并放弃位域语法.