ffsl
function是 glibc 的一部分。在 GCC 中,它也可以通过 __builtin_ffsl
获得。 .它返回 long 中最低有效位的索引。
有没有办法在符合标准的 C++ 代码中访问此功能?我想获得这些版本(如果可用),因为它们是用汇编语言编写的,以实现高性能。 (大多数架构都提供了此功能或类似功能的说明。)
最佳答案
没有标准函数来实现这一点,每个编译器通常都提供它自己的内在函数来计算 ffs(参见例如 Wikipedia 以获得相对完整的列表)。所以你最好的办法是做一个包装器
#ifdef __GNUC__
# define ffs(x) __builtin_ffs(x)
#elif __INTEL_COMPILER
# define ffs(x) _bit_scan_forward(x)
...
另请注意,__builtin_ffs
和 ffs(3)
可能会生成不等效的代码(我会使用编译器内部代码,因为它们往往会被编译器更好地优化,在另一方面,GCC 内在函数并不总是得到很好的优化。
关于c++ - 在 C++ 中调用 `ffsl` 的标准方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41369765/