Ben Pfaff wrote: > I think you are overlooking the changes in Technical Corrigendum > 1, which includes the following:
Thanks for the text; I don't have a copy of this Technical Corrigendum. I have changed stdint_.h and the test module accordingly. Bruno diff -c -3 -r1.17 stdint_.h *** lib/stdint_.h 17 Jun 2006 20:02:16 -0000 1.17 --- lib/stdint_.h 23 Jun 2006 14:54:37 -0000 *************** *** 924,944 **** #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) /* 7.18.4.1. Macros for minimum-width integer constants */ #undef INT8_C #undef UINT8_C #define INT8_C(x) x ! #define UINT8_C(x) x##U #undef INT16_C #undef UINT16_C #define INT16_C(x) x ! #define UINT16_C(x) x##U #undef INT32_C #undef UINT32_C #define INT32_C(x) x ! #define UINT32_C(x) x##U #undef INT64_C #undef UINT64_C --- 924,969 ---- #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) /* 7.18.4.1. Macros for minimum-width integer constants */ + /* According to ISO C 99 Technical Corrigendum 1 */ #undef INT8_C #undef UINT8_C #define INT8_C(x) x ! #if @HAVE_UINT8_T@ ! # if @BITSIZEOF_UINT8_T@ < @BITSIZEOF_UNSIGNED_INT@ ! # define UINT8_C(x) x ! # else ! # define UINT8_C(x) x##U ! # endif ! #else ! # define UINT8_C(x) x ! #endif #undef INT16_C #undef UINT16_C #define INT16_C(x) x ! #if @HAVE_UINT16_T@ ! # if @BITSIZEOF_UINT16_T@ < @BITSIZEOF_UNSIGNED_INT@ ! # define UINT16_C(x) x ! # else ! # define UINT16_C(x) x##U ! # endif ! #else ! # define UINT16_C(x) x ! #endif #undef INT32_C #undef UINT32_C #define INT32_C(x) x ! #if @HAVE_UINT32_T@ ! # if @BITSIZEOF_UINT32_T@ < @BITSIZEOF_UNSIGNED_INT@ ! # define UINT32_C(x) x ! # else ! # define UINT32_C(x) x##U ! # endif ! #else ! # define UINT32_C(x) x ! #endif #undef INT64_C #undef UINT64_C diff -c -3 -r1.1 test-stdint.c *** tests/test-stdint.c 16 Jun 2006 13:29:04 -0000 1.1 --- tests/test-stdint.c 23 Jun 2006 14:54:37 -0000 *************** *** 322,362 **** /* 7.18.4. Macros for integer constants */ verify (INT8_C (17) == 17); ! #if 0 /* The language in ISO C 99 7.18.4 is too strong. */ ! verify_same_types (INT8_C (17), (int_least8_t)0); ! #endif verify (UINT8_C (17) == 17); ! #if 0 /* The language in ISO C 99 7.18.4 is too strong. */ ! verify_same_types (UINT8_C (17), (uint_least8_t)0); ! #endif verify (INT16_C (17) == 17); ! #if 0 /* The language in ISO C 99 7.18.4 is too strong. */ ! verify_same_types (INT16_C (17), (int_least16_t)0); ! #endif verify (UINT16_C (17) == 17); ! #if 0 /* The language in ISO C 99 7.18.4 is too strong. */ ! verify_same_types (UINT16_C (17), (uint_least16_t)0); ! #endif verify (INT32_C (17) == 17); ! verify_same_types (INT32_C (17), (int_least32_t)0); verify (UINT32_C (17) == 17); ! verify_same_types (UINT32_C (17), (uint_least32_t)0); #if HAVE_INT_LEAST64_T_IN_STDINT_H || _STDINT_H_HAVE_INT64 verify (INT64_C (17) == 17); ! verify_same_types (INT64_C (17), (int_least64_t)0); #endif #if HAVE_UINT_LEAST64_T_IN_STDINT_H || _STDINT_H_HAVE_UINT64 verify (UINT64_C (17) == 17); ! verify_same_types (UINT64_C (17), (uint_least64_t)0); #endif verify (INTMAX_C (17) == 17); ! verify_same_types (INTMAX_C (17), (intmax_t)0); verify (UINTMAX_C (17) == 17); ! verify_same_types (UINTMAX_C (17), (uintmax_t)0); int --- 322,354 ---- /* 7.18.4. Macros for integer constants */ verify (INT8_C (17) == 17); ! verify_same_types (INT8_C (17), (int_least8_t)0 + 0); verify (UINT8_C (17) == 17); ! verify_same_types (UINT8_C (17), (uint_least8_t)0 + 0); verify (INT16_C (17) == 17); ! verify_same_types (INT16_C (17), (int_least16_t)0 + 0); verify (UINT16_C (17) == 17); ! verify_same_types (UINT16_C (17), (uint_least16_t)0 + 0); verify (INT32_C (17) == 17); ! verify_same_types (INT32_C (17), (int_least32_t)0 + 0); verify (UINT32_C (17) == 17); ! verify_same_types (UINT32_C (17), (uint_least32_t)0 + 0); #if HAVE_INT_LEAST64_T_IN_STDINT_H || _STDINT_H_HAVE_INT64 verify (INT64_C (17) == 17); ! verify_same_types (INT64_C (17), (int_least64_t)0 + 0); #endif #if HAVE_UINT_LEAST64_T_IN_STDINT_H || _STDINT_H_HAVE_UINT64 verify (UINT64_C (17) == 17); ! verify_same_types (UINT64_C (17), (uint_least64_t)0 + 0); #endif verify (INTMAX_C (17) == 17); ! verify_same_types (INTMAX_C (17), (intmax_t)0 + 0); verify (UINTMAX_C (17) == 17); ! verify_same_types (UINTMAX_C (17), (uintmax_t)0 + 0); int