内建函数(Built-in Functions)整理

以下是一些常见的 GCC 和 Clang 编译器提供的内建函数(Built-in Functions)以及它们的功能:

1. 算术运算:
__builtin_add_overflow(a, b, res):检查 a + b 是否溢出,并将结果存储在 res 中__builtin_sub_overflow(a, b, res):检查 a - b是否溢出,并将结果存储在 res 中。
__builtin_mul_overflow(a, b, res):检查 a * b是否溢出,并将结果存储在 res 中。

2. 位操作:
__builtin_popcount(x):计算整数 `x` 的二进制表示中1的个数。
__builtin_clz(x):计算整数 `x` 的二进制表示中从最高位开始连续的0的个数。
__builtin_ctz(x):计算整数 `x` 的二进制表示中从最低位开始连续的0的个数。
__builtin_parity(x):计算整数 `x` 的二进制表示中1的奇偶性。
__builtin_ffs(x):返回 `x` 的最低位的索引(从1开始)。

3. 内存操作:
__builtin_memcpy(dest, src, size):将 `size` 字节从 `src` 复制到 `dest`。
__builtin_memset(ptr, value, size):将 `ptr` 开始的内存块的前 `size` 个字节设置为 `value`。
__builtin_memmove(dest, src, size):将 `size` 字节从 `src` 移动到 `dest`,处理内存重叠情况。
__builtin_expect(exp, c):提示编译器表达式 `exp` 的期望结果为 `c`。

4. 类型转换:
__builtin_types_compatible_p(type1, type2):检查类型 `type1` 和 `type2` 是否兼容。
__builtin_choose_expr(exp, val1, val2):根据 `exp` 的值选择返回 `val1` 或 `val2`。
__builtin_convertvector(vec, type):将矢量 `vec` 转换为指定类型 `type`。

5. 原子操作:
__sync_val_compare_and_swap(ptr, oldval, newval):比较 `*ptr` 和 `oldval`,如果相等则将 `newval` 存储到 `*ptr`。
__sync_fetch_and_add(ptr, val):将 `*ptr` 的值加上 `val` 并返回旧值。
__atomic_exchange(obj, value, memorder):以指定的内存顺序将 `value` 存储到 `obj` 中并返回原值。

这些内建函数提供了许多方便且高效的操作,可以帮助程序员优化代码并实现一些底层的功能。具体的内建函数列表可以查阅对应编译器的文档以获取更详细的信息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值