Jacek Caban jacek@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