阅读源码的时候看到一个宏, 不太理解为啥要加 !!, 就是下面的 __builtin_expect 负负得正,不是不用加吗
#if (defined(__GNUC__) && __GNUC__ >= 3) || defined(__clang__)
#define unlikely(x) __builtin_expect(!!(x), 0)
#else
#define unlikely(x) (x)
#endif
抱歉, 标题打了两个 ! , 结果被吞了一个
1
ai277014717 2021-07-18 10:53:10 +08:00 1
这样可以保证输入非 0 即 1
|
2
BrettD 2021-07-18 10:54:57 +08:00 via iPhone 1
把任何数值变成只有两个可能:0 和 1
|
3
ruiyi1994 OP @ai277014717 @BrettD 感谢, 学到了.
|
4
Baymaxyu 2021-07-18 12:18:25 +08:00 via iPhone
这样就可以转化成布尔类型(内核代码里好多这样的)
|