很没有使用union,用的过程中 总结了一点
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
#pragma pack(1)
typedef struct
{
union A//只是uint_t 8
{
uint8_t a:1;
uint8_t b:3;
uint8_t c:8;
//uint8_t d:8;
//uint16_t f:16;
};
uint8_t e;
}test_t;
union foo{
char s[10];
uint32_t i;
};
#pragma pack()
union fo1{
char s[10];
uint32_t i;
};
其长度为联合体中元类型最大的变量长度的整数倍,
//且要大于等于其最大成员变量所占用的存储空间
int main()
{
test_t dest;
uint16_t src = 0xFEBA;
memcpy(&dest,&src,2);
printf("packed:dest=%d,foo=%d,not pack:fo1=%d\r\n",sizeof(dest),sizeof(foo),sizeof(fo1));
//printf("A.a=(%x)\r\n",dest.A.a);
//printf("A.b=(%x)\r\n",dest.A.b);
//printf("A.c=(%x)\r\n",dest.A.c);
//printf("A.d=(%x)\r\n",dest.A.d);
//printf(" .e=(%x)\r\n",dest.e);
return 0;
}