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
尝试使用 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