打印

AVR 中正确的编译 怎么在ARM 中就不正确呢?

[复制链接]
1378|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Goto_ARM|  楼主 | 2008-10-27 14:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请高手指教~~  急啊~~

    本例在AVR 中能够正确的运行,但是在ARM中缺老是报错,请看下例~~

 typedef struct
{  
unsigned char  uc1;
unsigned char uc2;
unsigned char uc3;
unsigned char uc4;
} infor

struct infor = {0x12,0x13,0x14,0x15 };

int main(void )

{   
   unsigned char *ptr = NULL;
   unsigned char  uc[5];
   unsigned char i=0;
   
   ptr = uc;

for(i=0;i<3;i++)
 *(ptr++) = *((unsigned char *)infor+i );

while(1);
return 0;
}

报错:error: invaild type conversion    其实: ptr = ( char * )infor ; 就会报错的哦~~  

  上面的类型转换错误,在AVR 中是正确的。  
请问,是不是要改编译器呢? 我改成GUN 编译器好像也不正确啊? AVR 用的就是GUN编译器啊~~
 急呀~~~~~




相关帖子

沙发
HWM| | 2008-10-27 16:28 | 只看该作者

你的程序应该是两个都玩不转,给你一个参考,不一定合你

typedef struct
{  
    unsigned char uc1;
    unsigned char uc2;
    unsigned char uc3;
    unsigned char uc4;
} struct_infor;

struct_infor *infor;

int main(void )

{   
    unsigned char *ptr = 0;
    unsigned char  uc[5];
    unsigned char i=0;
   
    ptr = uc;

    for(i=0;i<3;i++)
        *(ptr++) = *((unsigned char *)infor+i);

    while(1);

}

使用特权

评论回复
板凳
HWM| | 2008-10-27 16:32 | 只看该作者

typedef struct
{  
    unsigned char  uc1;
    unsigned char uc2;
    unsigned char uc3;
    unsigned char uc4;
} struct_infor;

struct_infor infor;

int main(void )

{   
    unsigned char *ptr = 0;
    unsigned char  uc[5];
    unsigned char i=0;
   
    ptr = uc;

    for(i=0;i<3;i++)
        *(ptr++) = *((unsigned char *)&infor+i);

    while(1);

}

使用特权

评论回复
地板
Goto_ARM|  楼主 | 2008-10-28 11:03 | 只看该作者

对你那种方法是正确的,可是我该怎么理解呢?

该怎么去理解这种现象呢? AVR 中都是正确的,在ARM 却是错误的。应该怎么样去分析呢?   其真正的原因在于什么呢?
还有一错:
typedef struct
{  
    unsigned char  uc1;
    unsigned char uc2;
    unsigned char uc3;
    unsigned char uc4;
} struct_infor;

struct_infor infor;

int main(void )

{   
    unsigned char *ptr = 0;
    unsigned char  uc[5];
    unsigned char i=0;
   
    ptr = uc;

    for(i=0;i<3;i++)
        *((unsigned char *)&infor+i) = *(ptr++); //换位置后则不正确
//这里没有值被写入 infor.uc1; 任然保持原来的值~~

    while(1);

}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

22

帖子

0

粉丝