本文转载自:http://blog.chinaunix.net/uid-29254195-id-3977753.html

gcc的内建函数,当x为常数时返回1, x为变量时返回0. 不过这并不完全准确。

linux kernel的代码中经常有这样的代码:

if (__builtin_constant_p(x)) {

do1;

} else {

do2;

}

可以认为这个函数的求值在编译时就完成了。从而外面的条件跳转语句的两个分支,只有其中一个会出现在目标代码中。

准确的定义应该是:如果x的值在编译时能确定,那么该函数返回值为1.

例如,int len = sizeof(struct ...);紧接着的__builtin_constant_p(len)返回值就是1,尽管len是变量。

最新文章

  1. 机器学习笔记----四大降维方法之PCA(内带python及matlab实现)
  2. GCC常用命令行一览表
  3. ASP.NET MVC 3和Razor中的@helper 语法
  4. bzoj1412
  5. 【译】 AWK教程指南 5AWK中的数组
  6. Asp.net Gridview导出Excel
  7. [原博客] POJ 2505 A multiplication game 组合游戏
  8. Hibernate入门(三)
  9. 从Dynamics CRM2011到Dynamics CRM2016的升级之路
  10. HTTP的一些基本概念
  11. _string
  12. C# Note28: Dispatcher类
  13. HDU - 3521 An easy Problem(矩阵快速幂)
  14. Android打造完美的刮刮乐效果控件
  15. node加密解密 crytpo
  16. java注解Annotation的使用实例
  17. android.graphics(2) - Path, drawPath, moveTo, lineTo, addRect, addCircle, addOval, addArc, drawText, drawTextOnPath
  18. HDU6299-2018ACM暑假多校联合训练1002-Balanced Sequence
  19. springboot 返回json格式数据的时间格式配置
  20. MySQL 第五天

热门文章

  1. selenium firefox46.0.1设置禁用图片
  2. 下载SCI论文
  3. vue2.0 仿手机新闻站(四)axios
  4. tyvj-1460 旅行
  5. HDU 1875 畅通project再续 (最小生成树 水)
  6. 重读金典------高质量C编程指南(林锐)-------第三章 命名规则
  7. C#高级编程---暂停计划
  8. 【C/C++】高亮C++中函数的重写——函数名相同?参数列表相同?返回值相同?
  9. js获取和设置属性的方法
  10. easyUI中 datagrid 一列字比较多时,出现省略符号