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

标签 c bit-fields

我想定义一个大的位域,以便快速监控一个非常大的元素结构的状态。这是我目前所拥有的:

#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/

相关文章:

c - 不同编译器的 sizeof(struct) 不同

c - C 中位域和 union 的大小

在 C-mbed 平台中每 10 秒调用一个函数

c - C语言二分查找

c - 将通用数组的元素传递给通用函数

从 char16_t* 复制到 char16_t*

CS50 Caesar - ASCII 字母和输出格式

关于 C 中位域排序语义的说明

c++ - 大小小于 int 的位域是否应该作为整体提升的主题?

c - char 和 int 上的 C struct 位字段之间的区别