我试图找到一个我不应该写的理由
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) )
在这种情况下:这种不特定的其他一些实现定义的类型可能是什么样的,我在这个地方的选择可能会产生哪些其他缺点?