[ZLG-ARM] 结构体函数问题

[复制链接]
2862|7
 楼主| sgz800 发表于 2007-3-13 10:38 | 显示全部楼层 |阅读模式
我在main.c中加入了以下函数:<br />struct&nbsp;msgTask<br />{<br />&nbsp;unsigned&nbsp;char&nbsp;cnt;<br />&nbsp;unsigned&nbsp;char&nbsp;*s;<br />};<br /><br />struct&nbsp;msgTask&nbsp;T5mbox={1,&quot;Hello&quot;};<br />可是ADS中出现以下ERROR<br />Error&nbsp;&nbsp;&nbsp;:&nbsp;C3028E:&nbsp;'=':&nbsp;implicit&nbsp;cast&nbsp;of&nbsp;pointer&nbsp;to&nbsp;non-equal&nbsp;pointer<br />main.c&nbsp;line&nbsp;35&nbsp;&nbsp;&nbsp;<br /><br />D:\EASYARM\OS\uCOS_Example\src\main.c:&nbsp;0&nbsp;warnings,&nbsp;1&nbsp;error,&nbsp;0&nbsp;serious&nbsp;errors<br /><br />不知怎么回事?
TRUE_ARM 发表于 2007-3-13 12:52 | 显示全部楼层

是想对变量初始化吧?

可能是编译器不支持这样的赋值方式,问题在字符串指针找不到地址。<br />可以这样:<br /><br />struct&nbsp;msgTask<br />{<br />unsigned&nbsp;char&nbsp;cnt;<br />unsigned&nbsp;char&nbsp;*s;<br />};<br /><br /><br />unsigned&nbsp;char&nbsp;ss[]=&quot;Hello&quot;;<br /><br />struct&nbsp;msgTask&nbsp;T5mbox={1,ss};
arzhiy 发表于 2007-3-13 13:04 | 显示全部楼层

re

我在main.c中加入了以下函数:<br />struct&nbsp;msgTask<br />{<br />unsigned&nbsp;char&nbsp;cnt;<br />unsigned&nbsp;char&nbsp;*s;&nbsp;&nbsp;&nbsp;&nbsp;-------------这里要用char<br />};<br />
zlgARM 发表于 2007-3-13 13:42 | 显示全部楼层

RE

跟编译器的设置有关系。请您看一下ADS的目标设置里的选项。
 楼主| sgz800 发表于 2007-3-13 18:32 | 显示全部楼层

我是这样子做的

void&nbsp;main(void)<br />{<br />struct&nbsp;msgTask<br />{<br />&nbsp;unsigned&nbsp;char&nbsp;cnt;<br />&nbsp;//unsigned&nbsp;char&nbsp;bb[20];<br />&nbsp;unsigned&nbsp;char&nbsp;*s;<br />}T5mbox;<br />T5mbox.cnt=1;<br />T5mbox.s=(void&nbsp;*)&quot;hello&quot;;<br />}<br />不知目标设置是不是DubuginRel&nbsp;setting里的Target&nbsp;setting项中,不知选那一项??<br />
zlgARM 发表于 2007-3-14 08:21 | 显示全部楼层

RE

请您参考。
high 发表于 2007-3-14 22:09 | 显示全部楼层

提醒

楼上的,你的定义本身是错误的(或者缺陷的)。ads报错在我看来反而是反映态度严谨。<br /><br />完整的定义<br />typedef&nbsp;struct&nbsp;_ascii_72&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;Index[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;ASCII_Dot[x];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}ASCII_72;<br /><br />我想,似乎您对语法有些模糊了。<br /><br />或者您可以这样更容易理解:<br />struct&nbsp;_ascii_72&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;Index[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;ASCII_Dot[x];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />};<br />typedef&nbsp;struct&nbsp;_ascii_72&nbsp;ASCII_72;
high 发表于 2007-3-14 22:28 | 显示全部楼层

个人看法,对能报出错误多的编译器持欢迎态度。

1,是某种态度严谨的表现。对于解析模糊的地方报出错误让用户处理,而不是增加容错性,带来也许是巨大的潜在风险。对c语言格外如此。<br /><br />2,&nbsp;认真对待每一个warning.提交的代码不允许任何warning.<br /><br />3,&nbsp;熟悉编译选项,熟悉ide,最好熟悉make
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

25

帖子

0

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