CPP __Builtin_

CPP Builtin

1. 位运算与计数

函数功能描述示例注意
__builtin_popcount(x)返回 x 的二进制中 1 的个数__builtin_popcount(15) → 4有 popcountl、popcountll 版本
__builtin_clz(x)返回从最高位开始的前导零个数__builtin_clz(1)(32位)→ 31传入 0 是 未定义行为;有 clzl、clzll
__builtin_ctz(x)返回从最低位开始的尾随零个数__builtin_ctz(8) → 3传入 0 是 未定义行为;有 ctzl、ctzll
__builtin_ffs(x)返回最低位 1 的位置(从 1 开始)__builtin_ffs(8) → 4x=0 时返回 0;有 ffsl、ffsll
__builtin_parity(x)返回 1 的个数的奇偶性(奇数个1→1)__builtin_parity(15) → 0有 parityl、parityll

2. 算术运算与安全

函数功能描述示例注意
__builtin_add_overflow(a, b, &res)安全加法,检测是否溢出溢出返回 true,否则存入 res 并返回 false支持 sub(减法)和 mul(乘法)
__builtin_abs(x) 等计算整数或浮点数的绝对值__builtin_abs(-10) → 10有 labs、llabs、fabs 等版本

3. 优化与调试

函数功能描述示例注意
__builtin_expect(exp, c)提供分支预测信息,优化代码布局常与 if 结合,如 if (__builtin_expect(ptr == nullptr, 0))错误使用可能降低性能
__builtin_trap()强制执行陷阱指令,程序异常终止用于不应执行到的代码路径–
__builtin_unreachable()告诉编译器某路径永远不会执行,辅助优化常用于 switch 的 default 分支(当所有情况已覆盖)–
comments powered by Disqus
冷暖世情,比比如畫。
Built with Hugo