X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fcompiler.h;h=939d9f319c6ad18b2942f7125ebd7fc6504688e4;hb=b4b9d3a4b7bf0d80e971551be81f7d8196919157;hp=7d2e6da572995c0ec59253d6bbdd9ea5b234e360;hpb=c7cbb22667c901e6107dd099e02e9506f9fbd360;p=simgear.git diff --git a/simgear/compiler.h b/simgear/compiler.h index 7d2e6da5..939d9f31 100644 --- a/simgear/compiler.h +++ b/simgear/compiler.h @@ -63,6 +63,9 @@ # 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 # pragma warning(disable: 4786) // identifier was truncated to '255' characters @@ -131,9 +134,31 @@ // #ifdef __APPLE__ +# ifdef __GNUC__ +# if ( __GNUC__ > 3 ) || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 3 ) inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } -#else +# else + // any C++ header file undefines isinf and isnan + // so this should be included before + // the functions are STILL in libm (libSystem on mac os x) +extern "C" int (isnan)(double); +extern "C" int (isinf)(double); +# endif +# else +inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } +# endif +#endif +#if defined (__FreeBSD__) +# if __FreeBSD_version < 500000 + extern "C" { + inline int isnan(double r) { return !(r <= 0 || r >= 0); } + } +# endif +#endif + +#if defined (__CYGWIN__) +# include // isnan #endif @@ -141,10 +166,5 @@ inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } // No user modifiable definitions beyond here. // -/** \def SG_USING_STD(x) - * Expands to using std::X - */ -# define SG_USING_STD(X) using std::X - #endif // _SG_COMPILER_H