[AVR单片机] IAR中结构体的内存地址的付给地址指针

[复制链接]
3664|6
 楼主| rafd 发表于 2007-6-24 16:19 | 显示全部楼层 |阅读模式
struct fff
{
 unsigned char a3;
unsigned char a2;
unsigned char a1;
unsigned char a0;
}dd;
int main(void)
{
   unsigned long *hh;
   dd.a3 = 0x12;
   dd.a2 = 0x34;
   dd.a1 = 0x56;
   dd.a0 = 0x78;
   hh = ⅆ
}
hh = ⅆ这句为什么在IAR中会出错,而在CV中却可以,我在网上找到的列子也都是可以的
 楼主| rafd 发表于 2007-6-24 21:33 | 显示全部楼层

已解决

union
{
    unsigned long s_windows_jgt;
    struct 
    {
        unsigned long data_a0:8;
        unsigned long data_a1:8;
        unsigned long data_a2:8;
        unsigned long data_a3:8;   
    };
};
maomao40 发表于 2007-6-25 09:20 | 显示全部楼层

呵呵...自投自抢:)

xiao 发表于 2007-6-25 12:06 | 显示全部楼层

这样

hh=(unsigned long *)ⅆ
呵呵。
 楼主| rafd 发表于 2007-6-26 05:44 | 显示全部楼层

只用结构体,代码少很多

编译AVR,联合加结果体的,data_a0 = *s_windows_sjdz;需要23条指令,
而只用结构体的,dd.data_a0 = *s_windows_sjdz;只用1条指令
 楼主| rafd 发表于 2007-6-26 05:56 | 显示全部楼层

写错了dd.data_a0 = *s_windows_sjdz;是3条

 楼主| rafd 发表于 2007-6-26 06:00 | 显示全部楼层

开始我也是过hh=(long)(&dd);拉了地址符号*

您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

84

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部