# define I64_FMT "I64"
#elif defined (__PRI_64_LENGTH_MODIFIER__) /* Mac */
# define I64_FMT __PRI_64_LENGTH_MODIFIER__
-#elif (defined (SIZEOF_LONG) && SIZEOF_LONG >= 8) || ULONG_MAX > 4294967295UL
+#elif (defined (SIZEOF_LONG) && SIZEOF_LONG >= 8) || ((ULONG_MAX >> 16) >> 16) == 0xffffffff
# define I64_FMT "l"
#else
# define I64_FMT "ll"
#ifndef _INT64_T
#define _INT64_T
-#if defined (NO_LONG_LONG) || ULONG_MAX > 4294967295UL
+#if defined (NO_LONG_LONG) || ((ULONG_MAX >> 16) >> 16) == 0xffffffff
typedef signed long int64_t;
#else
typedef signed long long int64_t;
#ifndef _UINT64_T
#define _UINT64_T
-#if defined (NO_LONG_LONG) || ULONG_MAX > 4294967295UL
+#if defined (NO_LONG_LONG) || ((ULONG_MAX >> 16) >> 16) == 0xffffffff
typedef unsigned long uint64_t;
#else
typedef unsigned long long uint64_t;