[tz] [PROPOSED 3/4] Port int_fast64_t to C89 64-bit long
Paul Eggert
eggert at cs.ucla.edu
Sat Nov 19 20:41:34 UTC 2022
* private.h (int_fast64_t, INT_FAST64_MIN, INT_FAST64_MAX)
(PRIdFAST64): Prefer long to long long if either will do,
as that works better on C89 platforms with 64-bit long.
---
private.h | 23 ++++++++++-------------
1 file changed, 10 insertions(+), 13 deletions(-)
diff --git a/private.h b/private.h
index aa6eb59..bdadd61 100644
--- a/private.h
+++ b/private.h
@@ -291,26 +291,23 @@
#endif
#ifndef INT_FAST64_MAX
-# ifdef LLONG_MAX
-typedef long long int_fast64_t;
-# define INT_FAST64_MIN LLONG_MIN
-# define INT_FAST64_MAX LLONG_MAX
-# else
-# if LONG_MAX >> 31 < 0xffffffff
-Please use a compiler that supports a 64-bit integer type (or wider);
-you may need to compile with "-DHAVE_STDINT_H".
-# endif
-typedef long int_fast64_t;
+# if 1 <= LONG_MAX >> 31 >> 31
+typedef long int_fast64_t;
# define INT_FAST64_MIN LONG_MIN
# define INT_FAST64_MAX LONG_MAX
+# else
+/* If this fails, compile with -DHAVE_STDINT_H or with a better compiler. */
+typedef long long int_fast64_t;
+# define INT_FAST64_MIN LLONG_MIN
+# define INT_FAST64_MAX LLONG_MAX
# endif
#endif
#ifndef PRIdFAST64
-# if INT_FAST64_MAX == LLONG_MAX
-# define PRIdFAST64 "lld"
-# else
+# if INT_FAST64_MAX == LONG_MAX
# define PRIdFAST64 "ld"
+# else
+# define PRIdFAST64 "lld"
# endif
#endif
--
2.38.1
More information about the tz
mailing list