警告:Comparison of constant 85 with expression of typeITStatus‘ (aka‘FlagStatus‘) is always true

最近遇到一个判断语句时,会莫名的报出如下警告

判断语句(示例):

    if(EXTI_GetITStatus(INPUT7_EXTI_LINE) != RESET) 
警示标注于:!=

警告如下:

warning: Comparison of constant 85 with expression of typeITStatus' (aka'FlagStatus') is always true.

虽然这个警示在我们编译时,不会出现在我们编译提示中,大多数情况不会影响程序的正常运行。

本着出现及可能有未知情况的心态,对其进行解析寻找问题根源。

通过警告字面意思,可以知道该判断语句为无效状态。它一直为真,所有可以排除

EXTI_GetITStatus(INPUT7_EXTI_LINE)

该函数存在问题。但是RESET也是库函数中STMF10x.h中的固定枚举成员,联系编译后,编译信息不会出现报警提示。所以我推测在编译过程中,对该值进行了优化或者强制对应。

1、如果是优化那么意味着该条件要么一直为真或者为假。通过验证语句正常。

2、如果是强制对应,那么就说明可能存在着相同变量。

通过find对RESET查询(或者GO TO Definition of),果然存在一个相同的变量名且该名被赋值。

通过修改变量名后,该警告消除。

结论:自我命名时,多考虑是否与系统变量名冲突。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值