On Sun, Jan 30, 2011 at 9:27 PM, Stefan Weil <w...@mail.berlios.de> wrote: > Am 04.12.2010 20:41, schrieb Stefan Weil: >> >> QEMU always uses POSIX format specifiers, even with mingw32. >> >> Therefore the old definitions of the PRI*64 macros were wrong. >> They should be removed, but as long as the mingw32 system >> include inttypes.h provides wrong definitions, too, >> we correct them here. >> >> Cc: Blue Swirl <blauwir...@gmail.com> >> Signed-off-by: Stefan Weil <w...@mail.berlios.de> >> --- >> qemu-common.h | 16 ++++++++++++---- >> 1 files changed, 12 insertions(+), 4 deletions(-) >> >> diff --git a/qemu-common.h b/qemu-common.h >> index de82c2e..c739f45 100644 >> --- a/qemu-common.h >> +++ b/qemu-common.h >> @@ -96,10 +96,18 @@ static inline char *realpath(const char *path, char >> *resolved_path) >> return resolved_path; >> } >> >> -#define PRId64 "I64d" >> -#define PRIx64 "I64x" >> -#define PRIu64 "I64u" >> -#define PRIo64 "I64o" >> +/* inttypes.h (mingw32) provides wrong definitions, so fix them here. */ >> +/* TODO: remove this workaround as soon as mingw32 is fixed. */ >> + >> +#undef PRId64 >> +#undef PRIx64 >> +#undef PRIu64 >> +#undef PRIo64 >> + >> +#define PRId64 "lld" >> +#define PRIx64 "llx" >> +#define PRIu64 "llu" >> +#define PRIo64 "llo" >> #endif >> >> /* FIXME: Remove NEED_CPU_H. */ > > What about this patch? It is still missing in QEMU git master.
It would appear to suppress quite a few warnings about formats. But on my version of inttypes.h there is the following comment: /* 7.8.1 Macros for format specifiers * * MS runtime does not yet understand C9x standard "ll" * length specifier. It appears to treat "ll" as "l". * The non-standard I64 length specifier causes warning in GCC, * but understood by MS runtime functions. */ So is this change OK after all?