打印
[STM32F1]

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

[复制链接]
810|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 | 只看该作者
可能是码农习惯。

使用特权

评论回复
5
wahahaheihei| | 2019-12-11 17:15 | 只看该作者
说不定写这段代码的码农就喜欢这么写。

使用特权

评论回复
6
abcd44|  楼主 | 2019-12-12 11:36 | 只看该作者
kingkits 发表于 2019-12-11 16:14
DISABLE 通常被定义为 0
ENABLE  通常定义为 !DISABLE (即!0)
多数的编译器里  !0 会解释为 1

这么说的话感觉有那么点意思

使用特权

评论回复
7
abcd44|  楼主 | 2019-12-12 11:39 | 只看该作者
wahahaheihei 发表于 2019-12-11 17:15
说不定写这段代码的码农就喜欢这么写。

也有可能 毕竟按着Shift+!比直接按两个=活动量更大吧

使用特权

评论回复
8
一事无成就是我| | 2019-12-15 15:57 | 只看该作者
位传递一般喜欢这么写,优点是,当传递过去的参数,正常情况下是0或者1,但是有时候程序员有可能写错成0和其它数,如果使用==,范围变窄,容易出错,这里主要是判断真假,不管你传递什么数据过去,就两种状态,真(不等于0),假(等于0)

使用特权

评论回复
9
木木guainv| | 2020-1-7 15:01 | 只看该作者
感觉就是一种习惯

使用特权

评论回复
10
googcheng| | 2020-1-7 16:51 | 只看该作者
有些是坑

使用特权

评论回复
11
磨砂| | 2020-1-8 12:46 | 只看该作者
只是个人习惯 不要纠结

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

67

帖子

0

粉丝