请教个ads环境下C语言的问题

coolgh007 2012-11-28 05:18:50
在请教个ads环境下编译下面的代码是否可以执行成功
int aa()
{
return -100;
}
下面的这个判断不能正确判断是否相等:
long states;
if( -100 == ( states = aa()))
{
states = 0;
return;
}
else
{
states = 1;
return;
}

是不是编译器不支持这种写法
...全文
150 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lr2131 2012-11-29
  • 打赏
  • 举报
回复
ADS1.2编译器有个bug,在一个函数里面有多个return的话,最后都会从第一个return退出,我遇到过几次。如果这个函数有返回类型,而且外部还需要由这个返回值做判断的话是一定会出问题的。因为它都会从第一个return返回这个值。但如果没有返回值的话,这个就无所谓了,解决方法是每个return分支用goto替换,跳转到最下面那唯一一个return来返回就可以了。不知道你这个是不是遇到了这个问题。有时间帮你看看这个。
HMGuardian 2012-11-28
  • 打赏
  • 举报
回复
哎,能不这样写还是换个写法吧! 最近我在移植u-boot的时候遇到个if表达式带函数调用的判断,被坑了一天多,至今不明其原因。 if (get_timer() >= tom) expression; //表达式被执行 temp = get_timer(); if (temp >= tom) expression; //表达式不被执行 我想多一条mov指令应该不至于让if判断发生变化吧!可问题就出在这儿了……

21,594

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧