c89 中的 fmax 和 fmin 替代方案

fmax and fmin alternative in c89

尝试使用 visual studio 2010 编译 GLFW 时出现错误 “错误 LNK2019:未解析的外部符号 _fmax 中引用 Error 3 error LNK2019: unresolved external symbol _fmax referenced in function _star F:\Dev\PROGS\GLFW\build\tests\cursor.obj cursor 但是我听说 visual studio 不支持 c99 。那么解决这个问题的方法是什么?

正如你所说,这些函数是在C99和C++11中添加的。微软的C编译器不支持C99,但是C++编译器以后的版本确实支持C++11。与 Visual Studio 2013 捆绑在一起的那个将具有这些功能。我不确定在编译 C 代码时它们是否可用。

如果您受困于较旧版本的编译器,例如 VS 2010,则自行实现这些功能是微不足道的。将它们放在 MSVC-compatibility header:

#ifdef _MSC_VER
    #define INLINE __inline

    INLINE double fmax(double left, double right)
    { return (left > right) ? left : right; }

    INLINE double fmin(double left, double right)
    { return (left < right) ? left : right; }
#endif