请教一个C51结构体的奇怪问题
在做一个通讯结构时发现这样的问题,百思不得其解啊~~定义双字节结构
typedef unsigned char UCHAR;
typedef unsigned int UINT;
typedefunion
{
UINT VAL;
struct
{
UCHAR LOW;
UCHAR HIGH;
}BYTE;
}WORD;
定义数据结构
union send_packed //上传数据包定义
{
struct
{
WORD Head;
WORD CH1;
WORD CH2;
WORD CH3;
WORD CH4;
WORD CH5;
WORD CH6;
UCHAR Chk;
} packet;
UCHAR byt_data;
} sDATA;
这样定义的数据是对的 每个WORD分配2字节
union send_packed //上传数据包定义
{
struct
{
WORD Head;
WORD CH;
UCHAR Chk;
} packet;
UCHAR byt_data;
} sDATA;
但这样定义出来的数据就乱套了,每个CH[]分配4字节,其中高2字节是空的。。。 不解啊
还有C51貌似不支持对齐指令#pragma pack(1)啊~~
在线等,知道的帮忙下 谢谢了 不要沉了~~知道的给点提示 谢谢了 不是正好吗,15 不是的上图你看看
lovewwy 发表于 2012-8-1 14:03 static/image/common/back.gif
不是正好吗,15
不是 15的我上图了 你帮忙看看是怎么一回事
不要沉了~~知道的给点提示 谢谢了 应该是两个字节,看后面的地址分配就知道了. 支持 korren ! korren 发表于 2012-8-2 09:12 static/image/common/back.gif
应该是两个字节,看后面的地址分配就知道了.
地址分配好像的确4个字节,不知道为啥 是编译器不支持的,前几天看了c++primary plus也说到了这个,只有比较新版本的c++编译器支持,
这个,应该也一样的吧 korren 发表于 2012-8-2 09:12 static/image/common/back.gif
应该是两个字节,看后面的地址分配就知道了.
你是说 CHk的分配地址??这个我也疑惑。。。。
硬件好了,上硬件看看结果先~~ graycker 发表于 2012-8-2 10:40 static/image/common/back.gif
是编译器不支持的,前几天看了c++primary plus也说到了这个,只有比较新版本的c++编译器支持,
这个,应该 ...
记错了,刚刚下了个电子版的看了下,是老版本的编译器结构体中不支持string类型 硬件测试下来 2个结构的运行结果一样。。。。。
说明是IDE或者Keil的编译显示有问题
唉~~都是看下sizeof()惹得祸,明明是15字节,size下居然29字节了
页:
[1]