我在 C: 中有这个结构
typedef struct Set {
unsigned int state : 1;
char array[LEN];
} Set;
在编译和执行时,我注意到位字段实际上改变了 char 数组本身中的一位!所以我想知道这是否是一些已知问题,并且在一个结构中包含具有其他数据类型的位字段是一种不好的做法,或者我没有正确执行某些操作。
最佳答案
废话!
请放心,struct
的元素总是进行布局,因此它们在内存中是不相交的。
您的程序显然有一个导致未定义行为的构造 - 很可能您正在索引array[-1]
或类似的内容。
(除非某些聪明的 alec 编写了 #define struct union
:其行为也是未定义的,因为您不应该在 C 中重新定义关键字。)
关于c - 在 C90 中将位字段和其他数据类型作为单个结构中的字段是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41299293/