OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4899|回复: 4

KEIL中写了一条语句一直有警告,大家看看是怎么回事?

[复制链接]

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2017-5-6
在线时间
23 小时
发表于 2017-12-25 13:56:16 | 显示全部楼层 |阅读模式
1金钱
KEIL5中,写了这条语句,编译后一直报警,我感觉不到哪里出了问题?难道是编译器版本的问题么?
while(!(rev = DET_TUBE_STATUS_YING(&tmp_05_TUBE, &tmp_10_TUBE)));       //报警的语句
函数声明:u8 DET_TUBE_STATUS_YING(u8* num_05, u8* num_10);
u8 rev = 0;
目前看,变量都是对的。我本意是这个函数DET_TUBE_STATUS_YING()返回0,一直执行;返回非零数,执行随后的语句。可是,还需要纪录返回值。
我知道,在C语言中,赋值表达式的值为左值的值。我的理解有偏差么?还是怎么了?
..\..\BSP\bsp_use.c(261): warning:  #1293-D: assignment in condition
          while(!(rev = DET_TUBE_STATUS_YING(&tmp_05_TUBE, &tmp_10_TUBE)));

问了度娘:出现这样的问题代码是可以继续正常执行的,但是写法不太严谨,因为在while/if的条件中,系统期望的是一个布尔类型的值,当表达式传递的结果非布尔值类型时,就会出现这样的警告。
可我,不是逻辑取反了么,怎么还不是bool类型。大家帮我看下,分析分析。谢了


最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

208

帖子

0

精华

高级会员

Rank: 4

积分
957
金钱
957
注册时间
2017-5-27
在线时间
107 小时
发表于 2017-12-25 13:56:17 | 显示全部楼层
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2017-12-26 01:10:16 | 显示全部楼层
把语句拆分为多句,就知道原因了
回复

使用道具 举报

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2017-5-6
在线时间
23 小时
 楼主| 发表于 2017-12-27 10:51:32 | 显示全部楼层

我就是这么解决的,只是想知道,问题到底出在哪里?不过,感觉这个问题不好回答呀!谢谢了
回复

使用道具 举报

5

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2016-3-30
在线时间
17 小时
发表于 2018-2-9 09:35:07 | 显示全部楼层
rev == ……
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-10 07:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表