On 02/19/08 21:26, Ludwig Nussel wrote:
> Klaus Schmidinger wrote:
>> 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);
>> Don't know if the gettext mechanisms would be able to handle
>> tr("Some number %" PRId64 "\n")
>> I wonder why there ar no proper format specifiers for this.
>> Or are there?
> The gettext info page says:
>> A similar case is compile time concatenation of strings. The ISO C
>> 99 include file `<inttypes.h>' contains a macro `PRId64' that can be
>> used as a formatting directive for outputting an `int64_t' integer
>> through `printf'. It expands to a constant string, usually "d" or "ld"
>> or "lld" or something like this, depending on the platform. 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".
> So translations should still work. The ugliness of those macros remains.
I agree. I wonder who came up with this <adjective censored> idea?
Why would somebody totally break the printf mechanisms and introduce
such ugly macros?
I really hope we can avoid this insanity in VDR...
vdr mailing list