This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
?int64_t and PRI?64
- From: Samuel Thibault <samuel dot thibault at eu dot citrix dot com>
- To: newlib at sources dot redhat dot com
- Date: Thu, 8 Nov 2007 16:50:37 +0000
- Subject: ?int64_t and PRI?64
Hi,
There is some incoherency between e.g. uint64_t and PRI?64 macros: in
newlib/libc/include/stdint.h, one can read
#if __have_long64
typedef signed long int64_t;
typedef unsigned long uint64_t;
#define __int64_t_defined 1
#elif __have_longlong64
typedef signed long long int64_t;
typedef unsigned long long uint64_t;
#define __int64_t_defined 1
#elif __STDINT_EXP(INT_MAX) > 0x7fffffff
typedef signed int int64_t;
typedef unsigned int uint64_t;
#define __int64_t_defined 1
#endif
while in newlib/libc/include/inttypes.h, one can read e.g.
/* 64-bit types */
#if __have_longlong64
#define __PRI64(x) __STRINGIFY(ll##x)
#define __SCN64(x) __STRINGIFY(ll##x)
#elif __have_long64
#define __PRI64(x) __STRINGIFY(l##x)
#define __SCN64(x) __STRINGIFY(l##x)
#else
#define __PRI64(x) __STRINGIFY(x)
#define __SCN64(x) __STRINGIFY(x)
#endif
And it happens that I have both have_longlong64 and have_long64, so that
gcc complains about the formats. These should be made agree.
Samuel