英特尔C++编译器“使用未声明的标识符'_blsr_u64'”

rggaifut  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(129)

正如标题所说,我在使用intel c++(2024)编译器时遇到了这个编译错误。
我使用Visual Studio来编码和编译。它与VS编译器一起工作得很好。
这是我的代码中的两个相关行:

#include <immintrin.h>

#define Bitloop(X) for(;X; X = _blsr_u64(X))

字符串
有没有人对英特尔编译器有经验,为什么它不工作?我应该包括另一个库吗?

jvidinwx

jvidinwx1#

在调查了每个编译器的包含文件夹后,我注意到_blsr_u64没有在intel中定义(以及clang)。它在另一个库(bmiintrin.h)中定义,不能直接包含。
理论上应该包括x86intrin.h,但我也得到了一个错误:cannot open source file "x86intrin.h",尽管它存在。
无论如何,我放弃了,并使用了我在bmiintrin.h中找到的实现

__blsr_u64(unsigned long long __X)
{
  return __X & (__X - 1);
}

字符串

相关问题