Fix the [U]INT*_C() creation macros
authorH. Peter Anvin <hpa@zytor.com>
Sat, 2 Jun 2007 02:26:21 +0000 (02:26 +0000)
committerH. Peter Anvin <hpa@zytor.com>
Sat, 2 Jun 2007 02:26:21 +0000 (02:26 +0000)
The [U]INT*_C() macros were broken, because ## takes precedence over
macro resolution.

inttypes/i16l32/inttypes.h
inttypes/i32l32/inttypes.h
inttypes/i32l64/inttypes.h

index 6242e19..c0151e8 100644 (file)
@@ -28,22 +28,22 @@ typedef unsigned long long  uint64_t;
 #define _pri32 "l"
 #define _pri64 "ll"
 
-#define _c8    ""
-#define _c16   ""
-#define _c32   "L"
-#define _c64   "LL"
+#define _cst8
+#define _cst16
+#define _cst32 L
+#define _cst64 LL
 
-/* The rest of this is common to all models */
+#define INT8_C(x)      x
+#define INT16_C(x)     x
+#define INT32_C(x)     x ## L
+#define INT64_C(x)     x ## LL
 
-#define INT8_C(x)      x ## _c8
-#define INT16_C(x)     x ## _c16
-#define INT32_C(x)     x ## _c32
-#define INT64_C(x)     x ## _c64
+#define UINT8_C(x)     x ## U
+#define UINT16_C(x)    x ## U
+#define UINT32_C(x)    x ## UL
+#define UINT64_C(x)    x ## ULL
 
-#define UINT8_C(x)     x ## U ## _c8
-#define UINT16_C(x)    x ## U ## _c16
-#define UINT32_C(x)    x ## U ## _c32
-#define UINT64_C(x)    x ## U ## _c64
+/* The rest of this is common to all models */
 
 #define PRId8          _pri8  "d"
 #define PRId16         _pri16 "d"
index 2e5760e..034f085 100644 (file)
@@ -28,22 +28,17 @@ typedef unsigned long long  uint64_t;
 #define _pri32 ""
 #define _pri64 "ll"
 
-#define _c8    ""
-#define _c16   ""
-#define _c32   ""
-#define _c64   "LL"
+#define INT8_C(x)      x
+#define INT16_C(x)     x
+#define INT32_C(x)     x
+#define INT64_C(x)     x ## LL
 
-/* The rest of this is common to all models */
-
-#define INT8_C(x)      x ## _c8
-#define INT16_C(x)     x ## _c16
-#define INT32_C(x)     x ## _c32
-#define INT64_C(x)     x ## _c64
+#define UINT8_C(x)     x ## U
+#define UINT16_C(x)    x ## U
+#define UINT32_C(x)    x ## U
+#define UINT64_C(x)    x ## ULL
 
-#define UINT8_C(x)     x ## U ## _c8
-#define UINT16_C(x)    x ## U ## _c16
-#define UINT32_C(x)    x ## U ## _c32
-#define UINT64_C(x)    x ## U ## _c64
+/* The rest of this is common to all models */
 
 #define PRId8          _pri8  "d"
 #define PRId16         _pri16 "d"
index 1a4cbb7..a0531c0 100644 (file)
@@ -28,22 +28,17 @@ typedef unsigned long               uint64_t;
 #define _pri32 ""
 #define _pri64 "l"
 
-#define _c8    ""
-#define _c16   ""
-#define _c32   ""
-#define _c64   "L"
+#define INT8_C(x)      x
+#define INT16_C(x)     x
+#define INT32_C(x)     x
+#define INT64_C(x)     x ## L
 
-/* The rest of this is common to all models */
-
-#define INT8_C(x)      x ## _c8
-#define INT16_C(x)     x ## _c16
-#define INT32_C(x)     x ## _c32
-#define INT64_C(x)     x ## _c64
+#define UINT8_C(x)     x ## U
+#define UINT16_C(x)    x ## U
+#define UINT32_C(x)    x ## U
+#define UINT64_C(x)    x ## UL
 
-#define UINT8_C(x)     x ## U ## _c8
-#define UINT16_C(x)    x ## U ## _c16
-#define UINT32_C(x)    x ## U ## _c32
-#define UINT64_C(x)    x ## U ## _c64
+/* The rest of this is common to all models */
 
 #define PRId8          _pri8  "d"
 #define PRId16         _pri16 "d"