From: Anthony Liguori <anthony@codemonkey.ws>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Mingw GCC not recognising printf format "%I64u"
Date: Thu, 29 Jan 2009 13:50:17 -0600 [thread overview]
Message-ID: <49820879.5080209@codemonkey.ws> (raw)
In-Reply-To: <20090129184234.GA13169@shareable.org>
Jamie Lokier wrote:
> Anthony Liguori wrote:
>
>>>> #ifdef _WIN32
>>>> #define PRIu64 "%llu"
>>>> #endif
>>>>
>>>>
>>> Qemu does that already!
>>>
>> I don't think so. mingw32 actuallt defines PRIu64 as "%I64u" even
>> though GCC doesn't like it.
>>
>
> Look again. qemu/qemu-common.h:
>
> #ifdef _WIN32
> #define WIN32_LEAN_AND_MEAN
> #define WINVER 0x0501 /* needed for ipv6 bits */
> #include <windows.h>
> ...etc...
> #define PRId64 "I64d"
> #define PRIx64 "I64x"
> #define PRIu64 "I64u"
> #define PRIo64 "I64o"
> #endif
>
> The only condition is whether _WIN32 is defined, which means WIN32
> API, except that it's also defined with Cygwin (and other unix
> emulations) which have quite different functions.
>
Okay, I wrote a small program that included inttypes.h. PRIu64 was
defined as I64u.
>> FWIW, the following seems to work for me:
>>
>> /* Mingw has a broken PRIu64 */
>> #if defined(__MINGW32__)
>> #undef PRIu64
>> #define PRIu64 "Ld"
>> #endif
>>
>
> (Should by "Lu", btw).
>
> How you checked it prints correctly? There are Googlable reports of
> people using "%lld" on Mingw saying that it doesn't print large 64-bit
> values correctly, because it truncates them to 32 bits, and trying
> "%I64u" and it works. Possibly due to Mingw programs calling
> Microsoft's C library, therefore being subject to Windowsness.
>
I only tried with a small number so it could possibly truncate large
numbers.
Regards,
Anthony Liguori
> The same _could_ happen with "%Ld" or "%Lu", if Microsoft hasn't
> implemented that as 64-bit.
>
> -- Jamie
>
>
>
next prev parent reply other threads:[~2009-01-29 19:50 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-28 19:43 [Qemu-devel] [PATCH] Silence half of warnings in MinGW Consul
2009-01-28 21:50 ` Anthony Liguori
2009-01-29 6:21 ` [Qemu-devel] Mingw GCC not recognising printf format "%I64u" Jamie Lokier
2009-01-29 6:28 ` Jamie Lokier
2009-01-29 7:42 ` François Revol
2009-01-29 13:36 ` Anthony Liguori
2009-01-29 13:55 ` Jamie Lokier
2009-01-29 15:00 ` Anthony Liguori
2009-01-29 18:34 ` [Qemu-devel] " Consul
2009-01-29 18:42 ` [Qemu-devel] " Jamie Lokier
2009-01-29 19:50 ` Anthony Liguori [this message]
2009-01-29 20:44 ` [Qemu-devel] " Consul
2009-01-29 20:56 ` Anthony Liguori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49820879.5080209@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.