[STM32F1] stm库函数if判断为何要用!=进行判断

[复制链接]
1051|10
 楼主| abcd44 发表于 2019-12-11 15:44 | 显示全部楼层 |阅读模式
本帖最后由 abcd44 于 2019-12-11 15:46 编辑

最近在研读stm库函数发现好多if判断都是用!=DISABLE进行条件判断的,而不是用==ENABLE,为何库函数要这样写呢?
比如下面这段:
itmask = (uint8_t)ADC_IT;
  if (NewState != DISABLE)
  {
    /* Enable the selected ADC interrupts */
    ADCx->CR1 |= itmask;
  }
  else
  {
    /* Disable the selected ADC interrupts */
    ADCx->CR1 &= (~(uint32_t)itmask);
  }
FAQ 发表于 2019-12-11 16:00 | 显示全部楼层
我猜是为了防止将==写成=,这样写错的话编译器会报错。
kingkits 发表于 2019-12-11 16:14 | 显示全部楼层
DISABLE 通常被定义为 0
ENABLE  通常定义为 !DISABLE (即!0)
多数的编译器里  !0 会解释为 1
在个别的编译器,!0 不一定是 1
这样写代码,在移植时不会出错
wahahaheihei 发表于 2019-12-11 17:15 | 显示全部楼层
可能是码农习惯。
wahahaheihei 发表于 2019-12-11 17:15 | 显示全部楼层
说不定写这段代码的码农就喜欢这么写。
 楼主| abcd44 发表于 2019-12-12 11:36 | 显示全部楼层
kingkits 发表于 2019-12-11 16:14
DISABLE 通常被定义为 0
ENABLE  通常定义为 !DISABLE (即!0)
多数的编译器里  !0 会解释为 1

这么说的话感觉有那么点意思
 楼主| abcd44 发表于 2019-12-12 11:39 | 显示全部楼层
wahahaheihei 发表于 2019-12-11 17:15
说不定写这段代码的码农就喜欢这么写。

也有可能 毕竟按着Shift+!比直接按两个=活动量更大吧
一事无成就是我 发表于 2019-12-15 15:57 | 显示全部楼层
位传递一般喜欢这么写,优点是,当传递过去的参数,正常情况下是0或者1,但是有时候程序员有可能写错成0和其它数,如果使用==,范围变窄,容易出错,这里主要是判断真假,不管你传递什么数据过去,就两种状态,真(不等于0),假(等于0)
木木guainv 发表于 2020-1-7 15:01 | 显示全部楼层
感觉就是一种习惯
googcheng 发表于 2020-1-7 16:51 | 显示全部楼层
有些是坑
磨砂 发表于 2020-1-8 12:46 | 显示全部楼层
只是个人习惯 不要纠结
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

69

帖子

0

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