我正在尝试构建以下代码:
#include <stdint.h>
int main()
{
union {
uint32_t cw : 13;
struct {
uint32_t setting4 : 4;
uint32_t cmd : 9;
};
struct {
uint32_t setting8 : 8;
uint32_t cmd : 5;
};
} control;
return 0;
}
定义了一个13位代码字,它由几个具有重叠解释的字段组成。
由于两个结构中cmd
字段的重复声明,我希望构建失败。令人惊讶的是,MSVC 2012没有报告错误。
作为一项完整性检查,我在ideone.com中测试了代码,但确实出现了错误。
注意:在为cw
分配值后运行代码并打印字段内容时,cmd
会解析为第一个(9位)成员。