PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] Linux WARN_ON 中的 !!condition
楼主:
Eleina
(艾琳娜)
2016-08-22 20:25:21
Linux
#ifndef WARN_ON
#define WARN_ON(condition) ({ \
int __ret_warn_on = !!(condition); \
if (unlikely(__ret_warn_on)) \
__WARN(); \
unlikely(__ret_warn_on); \
})
#endif
请问这里使用双重否定有什么好处?
似乎是迫使 __ret_warn_on 只会等于 0 或 1
作者:
ilikekotomi
(Young)
2016-08-22 20:29:00
上网查论坛也是看到只会等于0和1 学到一招
楼主:
Eleina
(艾琳娜)
2016-08-22 20:29:00
likely / unlikely 的 macro 中会再做一次, 这里有点多余?
作者:
nowar100
(抛砖引玉)
2016-08-22 20:49:00
就是你说的那样 不用管condition型态 永远会得到true/false 用 int 去接 bool 应该也是老 code 了仅仅是想利用C any to bool implicit cast特性而已
作者:
LPH66
(-6.2598534e+18f)
2016-08-23 02:18:00
关于再做一次的问题, 现在的编译器能把这样的两个判断化简不过这里变成 0 或 1 其实我猜跟 likely / unlikely 有关因为 likely / unlikely 实际上是 expect 1/0但是传进来的 condition 可以是任意整数
作者:
bluesoul
(å¿™æ»ä½ è€çˆ¸)
2016-08-23 13:49:00
应该也是用bool就好
继续阅读
[问题] opencv 出现 signal SIGABRT
allenchen821
[问题] bayer patten demosaic
okeyla
[问题] 关于Labview与C的wrapper.dll问题
hstrxgfcg216
[问题] mutex是class成员的相关疑问
hn12404988
[问题] ++重载的观念
orafrank
[问题]请问哪个是x*7 最快的implement方法
j7210429
[问题] c++函式资料的问题
s52222b
[问题]access static variable 的权限问题
j7210429
[问题] explicit instantiation的问题
ialk
[问题] 测量时间,时间overflow的问题
psylove5566
Links
booklink
Contact Us: admin [ a t ] ucptt.com