发信人: 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函数
 这些都是用于优化程序的。
 
 我所知的也就这些了,具体的没有深入。
 
 
 
 
  | 
 
 
 |