C 位域(Bit-fields)
位域允许按位分配存储,用于紧凑表示标志或小范围数值。注意可移植性与实现细节。
1. 定义
c
struct Flags {
unsigned a:1;
unsigned b:3;
unsigned c:4; // 总计 8 位
};2. 存储布局(实现相关)
- 位域的顺序、端序、跨字节打包方案依赖编译器与平台
- 不能依赖其二进制布局进行跨平台序列化
3. 类型与溢出
- 建议使用
unsigned类型的位域 - 超出位宽的赋值会被截断
4. 与整型联合使用(调试/序列化)
c
union U {
struct Flags f;
unsigned char raw;
};5. 小结
位域适合紧凑标志存储,但不要用于需要严格二进制兼容的场景;跨平台需自行定义打包规则。