Chinaunix首页 | 论坛 | 博客
  • 博客访问: 35082
  • 博文数量: 10
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 117
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-16 17:17
个人简介

_勇

文章分类
文章存档

2013年(10)

我的朋友

分类: LINUX

2013-11-05 17:51:02



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是变量。


阅读(4686) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~