c - GCC 对宏中使用的 __builtin 函数的优化

标签 c gcc macros

如果我有一个像这样的宏:

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

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

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

#define BIT_OFFSET (__builtin_clz(MAX_SIZE))

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

最佳答案

对于某些值、某些机器和某些编译器的某些版本,__builtin_clz(constant) 将在编译时进行评估。但不能保证它会在编译时针对所有值、所有机器和所有编译器进行评估。使用 gcc -S 查看编译器在目标计算机上执行的操作。

关于c - GCC 对宏中使用的 __builtin 函数的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10577149/

相关文章:

unix - SAS 在 Unix 服务器上定义宏

c - Directfb 1.6.3 无法设置 Gamma 斜坡 --> 参数无效

c - 在 Mac OS high sierra 上安装 GCC

c++ - 宏中的静态变量

c++ - 如何编写C .so 库来替代现有的C++ .so 库?

R – 没有魔法 [IP][y] : iPython -- Corrupt python kernel?

c++ #define一个带括号的宏?

C 弹跳球给出错误

c - 如果不断增加访问内存超过 malloc() 分配的大小,linux glibc 中会发生什么

c - 使用 mmap 使 int 数组对子进程可见