精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>编辑、编译、调试与发行>>Re:哪位大虾讲讲builtin function

主题:Re:哪位大虾讲讲builtin function
发信人: kevintz(血仍未冷)
整理人: wenbobo(2003-08-23 11:07:12), 站内信件
【 在 zelor 的大作中提到:】
:   只知道是gcc插入的东东,有什么作用?
:
:......
 
gcc的文档里说主要是三类用途:
1)调试目的。象__builtin_return_address (LEVEL)、__builtin_frame_address (LEVEL)

2)用于GCC内部处理异常和变长参数列表等,这类内建函数不在GCC文档里
说明,而且由于经常变化,所以通常情况下不建议使用。

3)优化目的。例如:
__builtin_constant_p (EXP)
可以确定EXP在编译阶段是否能被确认为一个常量,可以象下面这样应用:
#define Scale_Value(X)  \
    (__builtin_constant_p (X) ? ((X) * SCALE + OFFSET) : Scale (X))
如果X在编译时能确定为常量,Scale_Value(X)就是(X)*SCALE+OFFSET(其实也
是一个常量),否则就用Scale(X)计算Scale_Value(X)的值,这样能对程序的速度
进行优化。
   GCC也提供了一些buildin函数,对应于标准C库里相应的函数
如:`abort', `abs', `alloca', `cos',`cosf', `cosl', `exit', 
`_exit', `fabs', `fabsf', `fabsl', `ffs',`labs', `memcmp', 
`memcpy', `memset', `sin', `sinf', `sinl', `sqrt',`sqrtf', 
`sqrtl', `strcmp', `strcpy', and `strlen'.都有相应的buildin函数
这些都是用于优化程序的。

我所知的也就这些了,具体的没有深入。





[关闭][返回]