# if _MSC_VER >= 1200 // msvc++ 6.0 or greater
# define isnan _isnan
# define snprintf _snprintf
+# if _MSC_VER < 1500
+# define vsnprintf _vsnprintf
+# endif
# define copysign _copysign
+# define strcasecmp stricmp
+
+# undef min
+# undef max
# pragma warning(disable: 4786) // identifier was truncated to '255' characters
# pragma warning(disable: 4244) // conversion from double to float
#ifdef __APPLE__
# ifdef __GNUC__
-# if ( __GNUC__ >= 3 ) && ( __GNUC_MINOR__ >= 3 )
+# if ( __GNUC__ > 3 ) || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 3 )
inline int (isnan)(double r) { return !(r <= 0 || r >= 0); }
# else
// any C++ header file undefines isinf and isnan
#endif
#if defined (__FreeBSD__)
+#include <sys/param.h>
# if __FreeBSD_version < 500000
extern "C" {
inline int isnan(double r) { return !(r <= 0 || r >= 0); }
# include <ieeefp.h> // isnan
#endif
-#if defined(__MINGW32__)
-# define isnan(x) _isnan(x)
-#endif
-
//
// No user modifiable definitions beyond here.