所以我知道
struct bit { unsigned char a : 1; }
由于填充,仍会占用一个字节,我的问题是:
struct bit { unsigned char a : 1; ... unsigned char h : 1; }
这个结构会占用与char相同的大小吗?如果是这样,我最好只使用一个char
而不是?我问,因为我想使用位作为键,但如果可能的话,我宁愿避免按位操作.
使用位字段时无法保证任何内容.该结构可以具有任何大小和任何位顺序.事实上unsigned char
,标准甚至不支持位字段的类型!您的代码已经依赖于非标准扩展.
忘记位字段,忘了char
.uint8_t
如果需要可预测的可移植代码,则应使用和按位运算符.