这给出列内建函数可能发生和不可能发生的编译选项,这是一个预处理,在代码被编译成二进制后,程序在运行时候由于if/else if/else或者其他类型的“地址转换”过程,通过使用likely可以告诉编译器,这个判断发生的概率较小,编译器会将其编译到“更远”(地址跳转幅度更大的地方),这样,减小了代码跳转的幅度,减小了运行时间。

给出代码定义

#include <stdio.h># define likely(x) __builtin_expect(!!(x), 1)
# define unlikely(x) __builtin_expect(!!(x), 0)int main()
{int i = 0;//is unlikely happen, but is still possible happenif(unlikely(i+1))printf("i+1 = %d\n", i+1);//so does likely()return 0;
}

likely() 和 unlikely()内建宏定义函数相关推荐

  1. 内联函数和宏定义函数的区别

    1.不同点: 内联函数是在编译时展开,而宏在预编译时展开:在编译的时候,内联函数直接被嵌入到目标代码中去,而宏只是一个简单的文本替换. 内联函数可以进行诸如类型安全检查.语句是否正确等编译功能,宏不具 ...

  2. 列举5个python内置函数_Python5个内建高阶函数的使用

    描述 本文结合各种实际的例子详细讲解了Python5个内建高阶函数的使用,能够帮助理解Python的数据结构和提高数据处理的效率,这5个函数分别是: map reduce filter sorted/ ...

  3. unity android 宏定义,Unity各平台内置宏定义

    属性 方法 UNITY_EDITOR #define directive for calling Unity Editor scripts from your game code. UNITY_EDI ...

  4. 宏定义函数与普通函数的区别

    目录 前言 1 宏定义函数与普通函数不同 1.1 编译过程上不同 1.2 执行过程上不同 2 批判分析 3 内联函数 前言 可以在前面的系列文章中看到,FreeRTOS 的 头文件中定义了大量的宏定义 ...

  5. 关于C语言刷题(#define宏定义函数的常见错误)

    关于C语言刷题(#define宏定义函数的常见错误) 首先我们来先看对#define的定义 define,宏定义,C语言中预处理命令一种.分为无参宏定义和带参宏定义.无参宏定义的一般形式为:#defi ...

  6. c/c++宏函数的定义与使用(宏定义函数)(macro definition)

    文章目录 为什么要使用宏函数? 什么是宏 如何使用宏 宏的定义 不带参数的宏 带参数的宏(假参数,不是真正的参数,只是替换而已) 原理 对了,如果宏函数与函数名称相同,优先使用宏定义函数 为什么要使用 ...

  7. 深入浅出学Hive:Hive内建操作符与函数开发

    目录: 初始Hive Hive安装与配置 Hive内建操作符与函数开发 Hive JDBC Hive参数 Hive高级编程 Hive QL Hive Shell基本操作 Hive优化 Hive体系结构 ...

  8. Madagascar的宏定义函数--判断整数的奇偶性函数

    Madagascar中自己的宏定义函数判断某个整数的奇偶性,它们都在头文件rsf.h,形式如下: #define SF_ODD(n) ((n) & 1) #define SF_EVEN(n) ...

  9. define宏定义函数及用模板函数实现同样的功能

    最近在看别人的代码的过程中,发现了宏定义代码,由于自己这块之前没有用过,所以编写了示例程序,学习一下宏定义代码. 比如我们现在有一个需求,要实现两个数字交换,这两个数字可能是整型,浮点型或者其他类型, ...

最新文章

  1. 用IJ和gradle启动elasticsearch5.4.3
  2. how mang libraries do we have: 139
  3. [Qt教程] 第46篇 进阶(六) 国际化
  4. linux光标美化包,使用 [ powerlevel10k ] 美化你的WSL (Linux)
  5. js中的extend的用法及其JS中substring与substr的区别
  6. 怎样在linux系统上安装r,Linux系统之路——如何在CentOS7.2安装R(示例代码)
  7. android dropbox切换账户,android – 如何获取我的APP_KEY和SECRET_KEY的Dropbox同步?
  8. POI实现超大数据的Excel的读写操作
  9. 博为峰Java技术题 ——JavaSE Swing顶层容器中添加菜单栏
  10. JCI标准认证对我国医院建设有什么意义?
  11. mysql cast和convert函数
  12. ZStack实践汇 | 快照和备份的区别
  13. 不小心使用了私有API的后果
  14. input隐藏域传值给后台
  15. TRACE32——List源代码查看
  16. python flask web框架_Python_WEB框架之Flask
  17. 大数据可视化常用图表--简单说
  18. 520被女朋友三番两次拉黑后,我用 Python 写了个“舔狗”必备神器
  19. ESD和TVS管的区别
  20. 菜鸟写jquery入门教程(for web前端开发群4)(03)

热门文章

  1. 【 如何将.vue文件中的所有css代码放入一个.css文件中】
  2. Java: Number转换为BigDecimal:最好方法
  3. pytorch,cuda8,torch.cuda.is_available return flase (ubuntu14)
  4. Android设计模式(十五)--备忘录模式
  5. marquee标签、插入百度地图
  6. js判断页面点击事件
  7. opencv复杂变换cvPyrDown [6]
  8. java package 目录_修改jar包package目录结构操作方法
  9. 泰安机器人比赛_泰安学子在省青少年机器人竞赛上揽8个一等奖
  10. c语言编写贪吃蛇难点解析,刚学C语言,想写一个贪吃蛇的代码