我试图找到一个我不应该写的理由
struct bitfield {
signed foo:4;
unsigned bar:2;
};
而不是详细指定
struct bitfield {
signed int foo:4;
unsigned int bar:2;
};
由于位域的每个成员的大小都在冒号后明确指定,是否有任何缺点?
我是否使用char, short, long,有关系long long吗?指定的位域位数是否必须总是小于声明类型的宽度?
发现了一些相关的问题:
答案范围从
- 不要使用除 (signed/unsigned) 之外的任何其他类型
int或_Bool和 _Bool,signed int,unsigned int或其他一些实现定义的类型。(C99 6.2.7.1 (4) )
在这种情况下:这种不特定的其他一些实现定义的类型可能是什么样的,我在这个地方的选择可能会产生哪些其他缺点?