与 char 相比的位域大小
Size of bit field compared to a char
所以我知道
struct bit
{
unsigned char a : 1;
}
因为padding还是会占用一个字节,我的问题是:
struct bit
{
unsigned char a : 1;
...
unsigned char h : 1;
}
这个结构会占用与 char 相同的大小吗?如果是这样,我最好只使用 char
吗?我问是因为我想使用位作为键,但我宁愿尽可能避免按位运算。
使用 bit-fields 时没有任何保证。该结构可以具有任何大小和任何位顺序。事实上,bit-fields 的 unsigned char
类型甚至不受标准支持!您的代码已经依赖 non-standard 扩展。
忘记 bit-fields,忘记 char
。如果你想要可预测的、可移植的代码,你应该使用 uint8_t
和按位运算符。
所以我知道
struct bit
{
unsigned char a : 1;
}
因为padding还是会占用一个字节,我的问题是:
struct bit
{
unsigned char a : 1;
...
unsigned char h : 1;
}
这个结构会占用与 char 相同的大小吗?如果是这样,我最好只使用 char
吗?我问是因为我想使用位作为键,但我宁愿尽可能避免按位运算。
使用 bit-fields 时没有任何保证。该结构可以具有任何大小和任何位顺序。事实上,bit-fields 的 unsigned char
类型甚至不受标准支持!您的代码已经依赖 non-standard 扩展。
忘记 bit-fields,忘记 char
。如果你想要可预测的、可移植的代码,你应该使用 uint8_t
和按位运算符。