GCC优化__builtin函数用于宏

时间:2012-05-14 03:17:19

标签: c gcc macros

如果我有像这样的宏:

#define MAX_SIZE ((1<<18)-1)

我可以放心,通过运行时,这个数学已经完成,MAX_SIZE是一个文字。

我的问题是,如果我使用__builtin函数,例如:

,该怎么办?
#define BIT_OFFSET (__builtin_clz(MAX_SIZE))

这也会在运行时变为常量吗?

1 个答案:

答案 0 :(得分:3)

对于某些值,某些机器以及某些编译器的某些版本,__ builtin_clz(常量)将在编译时进行评估。但是无法保证在编译时对所有值,所有计算机和所有编译器进行评估。使用gcc -S查看编译器在目标计算机上执行的操作。