generalj 发表于 2009-2-28 14:38:51

关于联合体数据结构问题.NEC怎么是低位在前啊,有办法改吗?

typedef struct Frame_Start_stru
{
        UINT8 Start_Byte;
        UINT16 Data_Len;
}Frame_Start_stru;

typedef union ic_card_un
{
   UINT8 Byte;
   Frame_Start_stru Caption;
}ic_card_un;

ic_card_un Unval;
假设
Unval.Caption.Byte=0x01;
Unval.Caption.Byte=0x02;
Unval.Caption.Byte=0x03;

在51的Keil环境下
Unval.Caption.Data_Len值为0x0203.
到了NEC成了0x0302了

我在移植51程序到NEC上,上位机都弄好了,不好改了,这个有没有办法跟51兼容啊!

mingyuexin1981 发表于 2009-2-28 17:17:23

这个是编译器的存储模式决定的。不知道nec的编译器能不能设置大小端模式。不能的话,你只能在引用的时候修改了。比如51里高字节<->低字节<->,现在只能是高字节<->低字节<->来存或取了。
页: [1]
查看完整版本: 关于联合体数据结构问题.NEC怎么是低位在前啊,有办法改吗?