Jacek Caban <jacek(a)codeweavers.com> writes:
+#include <math.h> +#include "basetsd.h" + +#ifndef NAN + +#ifdef __GNUC__ + +# define NAN \ + (__extension__ \ + ((union { unsigned __l __attribute__ ((__mode__ (__SI__))); float __d; }) \ + { __l: 0x7fc00000UL }).__d) + +#else /* __GNUC__ */ + +#ifdef WORDS_BIGENDIAN +# define __nan_bytes { 0x7f, 0xc0, 0, 0 } +#else +# define __nan_bytes { 0, 0, 0xc0, 0x7f } +#endif + +static union { unsigned char __c[4]; float __d; } __nan_union + __attribute_used__ = { __nan_bytes }; +# define NAN (__nan_union.__d) + +#endif /* __GNUC__ */ + +#endif /* NAN */
I'd suggest to take advantage of the variant union instead of copying all these glibc definitions. Something like #ifdef NAN V_R8(&vt) = NAN; #else V_I8(&vt) = nan_magic_pattern; #endif -- Alexandre Julliard julliard(a)winehq.org