各位C++的大侠们,帮我看看下面定义的union,里面的参数是什么意思,
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/15 14:20:45
各位C++的大侠们,帮我看看下面定义的union,里面的参数是什么意思,
如上图:
typedef union
{
WORD Val;
BYTE v[2] __PACKED;
struct __PACKED
{
BYTE LB;
BYTE HB;
} byte;
struct __PACKED
{
__EXTENSION BYTE b0:1;
__EXTENSION BYTE b1:1;
__EXTENSION BYTE b2:1;
__EXTENSION BYTE b3:1;
__EXTENSION BYTE b4:1;
__EXTENSION BYTE b5:1;
__EXTENSION BYTE b6:1;
__EXTENSION BYTE b7:1;
__EXTENSION BYTE b8:1;
__EXTENSION BYTE b9:1;
__EXTENSION BYTE b10:1;
__EXTENSION BYTE b11:1;
__EXTENSION BYTE b12:1;
__EXTENSION BYTE b13:1;
__EXTENSION BYTE b14:1;
__EXTENSION BYTE b15:1;
} bits;
} WORD_VAL,WORD_BITS;
如上图:
typedef union
{
WORD Val;
BYTE v[2] __PACKED;
struct __PACKED
{
BYTE LB;
BYTE HB;
} byte;
struct __PACKED
{
__EXTENSION BYTE b0:1;
__EXTENSION BYTE b1:1;
__EXTENSION BYTE b2:1;
__EXTENSION BYTE b3:1;
__EXTENSION BYTE b4:1;
__EXTENSION BYTE b5:1;
__EXTENSION BYTE b6:1;
__EXTENSION BYTE b7:1;
__EXTENSION BYTE b8:1;
__EXTENSION BYTE b9:1;
__EXTENSION BYTE b10:1;
__EXTENSION BYTE b11:1;
__EXTENSION BYTE b12:1;
__EXTENSION BYTE b13:1;
__EXTENSION BYTE b14:1;
__EXTENSION BYTE b15:1;
} bits;
} WORD_VAL,WORD_BITS;
你这个union定义的是个对字操作的对象,根据不同的操作要求,有几种变体啊
typedef union
{
WORD Val; //大部分操作只针对字整体的
BYTE v[2] __PACKED; //操作需要针对字,字节的
struct __PACKED //操作需要很明确的区分高低字节,并且大部分都是字节操作
{
BYTE LB;
BYTE HB;
} byte;
struct __PACKED //所用到的操作大部分是位操作
{
__EXTENSION BYTE b0:1;
__EXTENSION BYTE b1:1;
__EXTENSION BYTE b2:1;
__EXTENSION BYTE b3:1;
__EXTENSION BYTE b4:1;
__EXTENSION BYTE b5:1;
__EXTENSION BYTE b6:1;
__EXTENSION BYTE b7:1;
__EXTENSION BYTE b8:1;
__EXTENSION BYTE b9:1;
__EXTENSION BYTE b10:1;
__EXTENSION BYTE b11:1;
__EXTENSION BYTE b12:1;
__EXTENSION BYTE b13:1;
__EXTENSION BYTE b14:1;
__EXTENSION BYTE b15:1;
} bits;
} WORD_VAL, WORD_BITS;
再问: 有个地方出现: WORD_VAL wv; wv.v[1]和wv.v[0]是什么呢?谢谢
再答: 第一句定义了一个你所定义的共同体的一个实例。 后面两个是访问共同体数据啊,这个操作也会顺便把共同体变成第二个定义的模式。也就是 BYTE v[2] __PACKED; //
typedef union
{
WORD Val; //大部分操作只针对字整体的
BYTE v[2] __PACKED; //操作需要针对字,字节的
struct __PACKED //操作需要很明确的区分高低字节,并且大部分都是字节操作
{
BYTE LB;
BYTE HB;
} byte;
struct __PACKED //所用到的操作大部分是位操作
{
__EXTENSION BYTE b0:1;
__EXTENSION BYTE b1:1;
__EXTENSION BYTE b2:1;
__EXTENSION BYTE b3:1;
__EXTENSION BYTE b4:1;
__EXTENSION BYTE b5:1;
__EXTENSION BYTE b6:1;
__EXTENSION BYTE b7:1;
__EXTENSION BYTE b8:1;
__EXTENSION BYTE b9:1;
__EXTENSION BYTE b10:1;
__EXTENSION BYTE b11:1;
__EXTENSION BYTE b12:1;
__EXTENSION BYTE b13:1;
__EXTENSION BYTE b14:1;
__EXTENSION BYTE b15:1;
} bits;
} WORD_VAL, WORD_BITS;
再问: 有个地方出现: WORD_VAL wv; wv.v[1]和wv.v[0]是什么呢?谢谢
再答: 第一句定义了一个你所定义的共同体的一个实例。 后面两个是访问共同体数据啊,这个操作也会顺便把共同体变成第二个定义的模式。也就是 BYTE v[2] __PACKED; //