我熟悉在处理器之间通信时使用位字段的问题——参见C/C++: Force Bit Field Order and Alignment以及为什么字节序会涉及这个问题.
但我的问题是关于使用位字段指定单字节寄存器中位的布局:它安全吗?
作为一个具体的例子,我正在使用一个具有字节宽度控制寄存器的设备,文档如下:
D7 (msb) | D6 | D5 | D4 | D3:D2 | D1 | D0 (lsb) |
---|---|---|---|---|---|---|
Vbias | Mode | Trigger | 3-wire | Fault Code | Fault | 50 Hz |
定义以下struct
个似乎很自然:
typedef struct {
unsigned int vbias : 1;
unsigned int mode : 1;
unsigned int trigger : 1;
unsigned int wire_3 : 1;
unsigned int fault_code : 2;
unsigned int fault : 1;
unsigned int hz_50 : 1
} control_reg_t;
所以问题是:因为我只在一个给定的处理器中使用这个struct
—它不会通过电线传输,等等—有没有理由不使用这种方法?