我想定义一个大的位域,以便快速监控一个非常大的元素结构的状态。这是我目前所拥有的:
#define TOTAL_ELEMENTS 1021 typedef struct UINT1024_tag { UINT8 byte[128]; } UINT1024; typedef struct flags_tag { UINT1024:TOTAL_ELEMENTS; } flags_t;
当我尝试编译它时,我收到错误消息,“错误:位字段 `
位域只能用于某些类型吗?我认为,如果我定义了一个足够大的变量,那么我的应用程序所需的大量位域就可以被定义,因为位域必须不大于用于定义它的类型。
如有任何想法或建议,我们将不胜感激。
最佳答案
位字段必须适合单个 int,不能使用任意大小。老实说,ANSI 位域实现有点坏了。它也遗漏了很多其他东西,比如实际应用程序通常需要的填充和布局控制。我会考虑编写一些宏或访问函数来抽象更大的尺寸并放弃位域语法。
关于c - 尝试定义 1,024 位(128 字节)位域时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1590893/