Linux应用程序之likely and unlikely宏定义
来源:互联网 发布:isignature签章软件v8 编辑:程序博客网 时间:2024/05/26 17:43
在很多代码里可以看到likely和unlikely宏定义,其定义为:
#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)
这两个宏定义使用了GCC内置函数,即便使用了-fno-buildin参数,这些函数仍然会被编译。
GCC includes built-in versions of many of the functions in the standard C library. The versions prefixed with __builtin_ will always be treated as having the same meaning as the C library function even if you specify the -fno-builtin option.
抽取这两个宏定义,并结合使用定义如下出错提示定义:
#define BUG_ALERT_FALSE(condition) do \{ \if (unlikely((condition) != 0)) \printf("BUG: failure at %s:%d/%s()!\n", \ __FILE__, __LINE__, __FUNCTION__); \} while(0)#define BUG_ALERT_TRUE(condition) do \{ \ if (likely((condition) != 0)) \ printf("BUG: failure at %s:%d/%s()!\n", \ __FILE__, __LINE__, __FUNCTION__); \} while(0)
有了提示函数BUG_ALERT_FALSE和BUG_ALERT_TRUE,这里简单验证下效果:
验证代码如下:
int main(void){int i = 7;BUG_ALERT_FALSE(i!=10);BUG_ALERT_TRUE(i==7);return 0;}
从这里我们可以看到这两个ALERT定义是如何使用的了吧。 ^_^
当然这样类似的内置函数,GCC提供了很多,其开头为__builtin_xxx,在项目中合理的使用这些内置函数,将大有裨益。
系列函数为:
参考资料:
【1】gcc内置函数
- Linux应用程序之likely and unlikely宏定义
- linux宏定义likely和unlikely解析
- linux likely & unlikely 宏
- linux likely and unlikely解析
- Likely and Unlikely in linux
- linux likely and unlikely解析
- 关于Linux Kernel中的宏定义likely和unlikely
- 关于Linux Kernel中的宏定义likely和unlikely
- 关于Linux Kernel中的宏定义likely和unlikely
- 关于Linux Kernel中的宏定义likely和unlikely
- Linux内核源码中两个宏定义likely,unlikely
- Linux 内核中 likely 与 unlikely 的宏定义解析
- Two Linux Kernel Macros: likely and unlikely
- 内核中的likely和unlikely宏定义
- 内核中的likely和unlikely宏定义
- 内核中的likely和unlikely宏定义
- 内核中的likely和unlikely宏定义
- likely and unlikely
- win7下,安装Framework4.0后仍然报Framework初始化错误,且"打开或关闭WINDOWS功能"为空白的可能原因
- CSS属性代码大全
- session缓存理解
- java中计算两个日期相差几天
- win7启用telnet功能
- Linux应用程序之likely and unlikely宏定义
- vb.net用来获取网页的类
- flash的不同分类
- 什么是TLS协议(传输层安全)
- windows开机死机问题
- J2EE常见易犯错误
- GIF格式的介绍,有空准备翻译一下:What's In A GIF - Bit by Byte
- linux的strace命令用法
- Google I/O 2011: Cloud Robotics