我不知道如何将值传递给位域:
- 在头文件中,我有下面的结构定义:
typedef struct { boolean Error; } Struct_A_T;
Struct_A_T Struct_A = {0U};
boolean WriteValue;
if (TRUE) {
Struct_A.Error.index = WriteValue;
}
}
else {
index++;
}
正如你所看到的,索引将递增,我希望WriteValue传递一个值到等于Struct_A_Error的索引的位位置,我不知道我应该如何定义它,并使位灵活,以便索引可以控制位位置。谢谢
期望将位位置更新为索引值
2条答案
按热度按时间mm9b1k5b1#
期望将位位置更新为索引值
位域不是这样工作的,在C语言中是不可能的。
C中的类型是静态的,它们不能在运行时改变,所以你的位域必须总是在同一个位置。
如果需要在内存位置中设置特定位,则必须在那里放置一个整数,并使用位移位和逻辑运算符将该位放置到所需的位置。
xzabzqsa2#
在我看来,OP不需要位字段或
bool
struct
成员,而是简单的 unsigned。index
应小于unsigned
位宽(通常为32)。