码迷,mamicode.com
首页 > 其他好文 > 详细

__builtin_constant_p(x) (转帖

时间:2018-05-11 10:42:48      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:条件   ant   一个   blog   kernel   net   http   就是   log   

本文转载自: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是变量。

__builtin_constant_p(x) (转帖

标签:条件   ant   一个   blog   kernel   net   http   就是   log   

原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/9023033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!