我有一些使用gcc内在函数的代码.我希望包含代码,以防内在缺失.我怎样才能做到这一点?
#ifdef __builtin_ctzll
Run Code Online (Sandbox Code Playgroud)
不起作用.
使用最新版本的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().
GCC 现在(过去几年)支持__has_builtin:它于 2020 年 5 月 7 日在 GCC 10.1 中引入。请在此处查看该版本的新功能。
另外,感谢@Charles 评论,请在此处找到错误报告