测试内置/内在函数

Cha*_*les 9 c gcc intrinsics

我有一些使用gcc内在函数的代码.我希望包含代码,以防内在缺失.我怎样才能做到这一点?

#ifdef __builtin_ctzll
Run Code Online (Sandbox Code Playgroud)

不起作用.

Lin*_*umz 5

使用最新版本的clang,现在可以检查内置的内在函数是否存在使用__has_builtin()宏,例如

int popcount(int x)
{
#if __has_builtin(__builtin_popcount)
  return __builtin_popcount(x);
#else
  int count = 0;
  for (; x != 0; x &= x - 1)
    count++;
  return count;
#endif
}
Run Code Online (Sandbox Code Playgroud)

让我们希望海湾合作委员会将来也会支持__has_builtin().


Hun*_*ler 4

GCC 现在(过去几年)支持__has_builtin:它于 2020 年 5 月 7 日在 GCC 10.1 中引入。请在此处查看该版本的新功能

另外,感谢@Charles 评论,请在此处找到错误报告