C++ 为C数学函数调用MSVC内置/内部函数

C++ 为C数学函数调用MSVC内置/内部函数,c++,visual-c++,c++11,intrinsics,built-in,C++,Visual C++,C++11,Intrinsics,Built In,对于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

对于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做与上述相同的工作

编辑:为了清楚起见:问题是关于
\uuuu内置*
函数,没有其他问题。我试过了

#pragma intrinsic(abs)

但这需要一个abs函数声明,我不希望在全局名称空间中使用它。

内部函数不可移植,因此您必须手动将其添加到列表中,并使用
\ifdef
切换模式

顺便说一下,您不必在全局名称空间中包含
abs
,而是包括
,而不是


编译器知道自己的内部函数是什么,MSVC使用它来启用它们。

对此有一个响应,链接到MSVC中可用的内部函数:您是否询问Microsoft的编译器是否支持
constepr
?答案是否定的,不是Visual Studio 2010或下一个版本VS 11.IIRC,你甚至不需要这样做-我相信有一个编译器开关,它决定是否使用内置函数而不是库函数?