【发布时间】:2013-08-09 16:30:43
【问题描述】:
所以我有一些代码用于我的板的iodefine。我在结构中看到了很多这些。它到底在做什么?它只是最后 4 位的占位符吗?为什么它不会导致编译器错误,它的用途是什么?
union {
unsigned char BYTE;
struct {
unsigned char OVRF:1;
unsigned char IDLNF:1;
unsigned char MODF:1;
unsigned char PERF:1;
unsigned char :4; <------------
} BIT;
} SPSR;
我希望这不是太多问题,我只是觉得这很有趣。
【问题讨论】:
-
看起来像未命名的填充。
-
你应该有
4而不是CHAR_BIT - 4... -
@KerrekSB 我 100% 同意你的观点,但它是一个自动生成的文件,大约有 23k 行,所以我无能为力 =P。谢谢大家的回答。
-
由于它与一个完整的 unsigned char 联合,我想这不是真的必要,但为了清楚起见......
-
@KerrekSB:鉴于此代码是针对一个非常特定的硬件量身定制的,该硬件包含一个带有溢出标志、空闲标志、模式故障标志和奇偶校验错误标志的串行外设状态寄存器,使用
CHAR_BIT-4不会完成任何事情。该程序不可移植,永远不会。
标签: c compiler-construction embedded