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

[复制链接]
2113|3
 楼主| Goto_ARM 发表于 2008-10-27 14:08 | 显示全部楼层 |阅读模式
请高手指教~~&nbsp;&nbsp;急啊~~<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本例在AVR&nbsp;中能够正确的运行,但是在ARM中缺老是报错,请看下例~~<br /><br />&nbsp;typedef&nbsp;struct<br />{&nbsp;&nbsp;<br />unsigned&nbsp;char&nbsp;&nbsp;uc1;<br />unsigned&nbsp;char&nbsp;uc2;<br />unsigned&nbsp;char&nbsp;uc3;<br />unsigned&nbsp;char&nbsp;uc4;<br />}&nbsp;infor<br /><br />struct&nbsp;infor&nbsp;=&nbsp;{0x12,0x13,0x14,0x15&nbsp;};<br /><br />int&nbsp;main(void&nbsp;)<br /><br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;*ptr&nbsp;=&nbsp;NULL;<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;uc[5];<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;ptr&nbsp;=&nbsp;uc;<br /><br />for(i=0;i&lt3;i++)<br />&nbsp;*(ptr++)&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;*)infor+i&nbsp;);<br /><br />while(1);<br />return&nbsp;0;<br />}<br /><br />报错:error:&nbsp;invaild&nbsp;type&nbsp;conversion&nbsp;&nbsp;&nbsp;&nbsp;其实:&nbsp;ptr&nbsp;=&nbsp;(&nbsp;char&nbsp;*&nbsp;)infor&nbsp;;&nbsp;就会报错的哦~~&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;上面的类型转换错误,在AVR&nbsp;中是正确的。&nbsp;&nbsp;<br />请问,是不是要改编译器呢?&nbsp;我改成GUN&nbsp;编译器好像也不正确啊?&nbsp;AVR&nbsp;用的就是GUN编译器啊~~<br />&nbsp;急呀~~~~~<br /><br /><br /><br /><br />
HWM 发表于 2008-10-27 16:28 | 显示全部楼层

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

typedef&nbsp;struct<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uc1;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uc2;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uc3;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uc4;<br />}&nbsp;struct_infor;<br /><br />struct_infor&nbsp;*infor;<br /><br />int&nbsp;main(void&nbsp;)<br /><br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;*ptr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;uc[5];<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ptr&nbsp;=&nbsp;uc;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt3;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ptr++)&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;*)infor+i);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br /><br />}<br />
HWM 发表于 2008-10-27 16:32 | 显示全部楼层

typedef&nbsp;struct<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;uc1;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uc2;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uc3;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uc4;<br />}&nbsp;struct_infor;<br /><br />struct_infor&nbsp;infor;<br /><br />int&nbsp;main(void&nbsp;)<br /><br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;*ptr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;uc[5];<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ptr&nbsp;=&nbsp;uc;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt3;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ptr++)&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;*)&infor+i);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br /><br />}<br />
 楼主| Goto_ARM 发表于 2008-10-28 11:03 | 显示全部楼层

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

该怎么去理解这种现象呢?&nbsp;AVR&nbsp;中都是正确的,在ARM&nbsp;却是错误的。应该怎么样去分析呢?&nbsp;&nbsp;&nbsp;其真正的原因在于什么呢?<br />还有一错:<br />typedef&nbsp;struct<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;uc1;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uc2;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uc3;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uc4;<br />}&nbsp;struct_infor;<br /><br />struct_infor&nbsp;infor;<br /><br />int&nbsp;main(void&nbsp;)<br /><br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;*ptr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;uc[5];<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ptr&nbsp;=&nbsp;uc;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt3;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;char&nbsp;*)&infor+i)&nbsp;=&nbsp;*(ptr++);&nbsp;//换位置后则不正确<br />//这里没有值被写入&nbsp;infor.uc1;&nbsp;任然保持原来的值~~<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br /><br />}<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

22

帖子

0

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