所以我有一些代码用于我的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;
我希望这不是太多问题,我发现这很有趣。
答案 0 :(得分:4)
这是一个未命名的位字段。它用于提供填充(通常在相邻的位域之间)。
(C99,6.7.2.1p11)“没有声明符的位字段声明,但只有冒号和宽度,表示未命名的位字段”
答案 1 :(得分:2)
struct-declarator:
declarator
type-specifier declarator (opt) : constant-expression
声明符是可选的,这就是编译器没有barf的原因。