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