gpt4 book ai didi

c++ - 为 C 数学函数调用 MSVC 内置/内在函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:34 24 4
gpt4 key购买 nike

对于 GCC 和 Clang,我可以轻松地做到这一点:

    // absolute value
inline constexpr int abs(const int number)
{ return __builtin_abs(number); }
inline constexpr long abs(const long number)
{ return __builtin_labs(number); }
inline constexpr long long abs(const long long number)
{ return __builtin_llabs(number); }
inline constexpr double abs(const double& number)
{ return __builtin_fabs(number); }
inline constexpr float abs(const float& number)
{ return __builtin_fabsf(number); }
inline constexpr long double abs(const long double& number)
{ return __builtin_fabsl(number); }

这就像一个魅力。我想对几乎每个数学函数都做类似的事情,并且让我的代码也能在 MSVC 上运行。我怎样才能为 MSVC 执行与上述相同的操作?

编辑:为清楚起见:问题是关于 __builtin_* 函数,没有别的。我试过了

#pragma intrinsic(abs)

但这需要 abs 函数的声明,我不希望它出现在我的全局命名空间中。

最佳答案

内部函数不可移植,因此您必须手动 look up the corresponding builtin function并将其添加到列表中,然后使用 #ifdef切换模式。

您不必非要有 abs顺便说一下,在全局命名空间中:包含 <cstdlib>而不是 <stdlib.h>you will get std::abs 相反。

编译器知道它们自己的内在函数是什么,MSVC 使用 the /Oi switch启用它们。

关于c++ - 为 C 数学函数调用 MSVC 内置/内在函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8871622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com