Re: Major pending change in 2.5 for multi-gigabyte file support

From: Henrik Nordstrom <hno@dont-contact.us>
Date: Sat, 12 Mar 2005 11:59:39 +0100 (CET)

On Sat, 12 Mar 2005, Serassio Guido wrote:

> Two questions related to 64 bit printf()
>
> - What about the use of PRIxxxxx macros for 64 bit format specifiers ?
>
> - On Windows the 64 bit support is fine, but there is a problem with 64 bit
> printf() format specifiers:

Then we should use a printf replacement fixing this. We already have one
replacement, but it doesnt support ll either..

> So, i.e., on Windows the unsigned 64 bit format specifier is "I64u", on other
> system should be "llu".

Argh. Why is there standards, and why doesn't anyone care to implement
them outside the free software?

I kind of assumed that if you have long long then you also have the
corresponding format specifier.

> I have already tried something like:
>
> #define PRIu64 "I64u"
> printf("this is a 64 bit int:"PRIu64"\n", value);
>
> but gcc wasn't happy .....
>
> the only working thing was:
>
> #define PRIu64 "I64u"
> char format[]="this is a 64 bit int:"PRIu64"\n";
> printf(format, value);
>
> Any suggestion ?

We could disable the GCC printf format checks on Windows. See the
PRINTF_FORMAT_ARGn macros in include/config.h

Or alternatively don't allow large objects on Windows. Just need to fall
back on using long.

Regards
Henrik
Received on Sat Mar 12 2005 - 03:59:40 MST

This archive was generated by hypermail pre-2.1.9 : Fri Apr 01 2005 - 12:00:04 MST