Dave P wrote:
On Tuesday 19 Feb 2008, Klaus Schmidinger wrote:
remote.c:124: warning: format "%016LX" expects type "long long unsigned int", but argument 4 has type "uint64_t"
Apparently there are macros for this, like PRId64 and such. But i don't like having to write something like
int64_t n = ...; printf("Some number %" PRId64 "\n", n);
It seems to be the POSIX way...
Don't know if the gettext mechanisms would be able to handle
tr("Some number %" PRId64 "\n")
It would probably be necessary to have multiple translations for the string after macro expansion (negating the whole reason for having the macro in the first place).
http://www.gnu.org/software/gettext/manual/html_node/Preparing-Strings.html seems to promise that it works without multiple translations:
Assume you have code like
printf ("The amount is %0" PRId64 "\n", number);
The gettext tools and library have special support for these <inttypes.h> macros. You can therefore simply write
printf (gettext ("The amount is %0" PRId64 "\n"), number);
The PO file will contain the string "The amount is %0<PRId64>\n". The translators will provide a translation containing "%0<PRId64>" as well, and at runtime the gettext function's result will contain the appropriate constant string, "d" or "ld" or "lld".
gettext-0.14 (4 years old) already has this text, so it's probably safe to use by now. (Apparently I have been living under a rock for the last couple of years, I didn't even know about that PRId64 thing - thanks for pointing it out.)
Regards... Michael