[erlang-patches] Re: Two printf format fixes
Tue Mar 2 14:31:34 CET 2010
Martti Kuparinen writes:
> BjÃ¶rn Gustavsson wrote:
> >> - fprintf(stderr, "esock_malloc: cannot alloc %d bytes\n", size);
> >> + fprintf(stderr, "esock_malloc: cannot alloc %zu bytes\n", size);
> > As far as I know, the "z" specifier is not portable. For
> Could you then consider type-casting size to (unsigned long long) and use the
> correct format for that?
You're underestimating the brokenness of MS' so-called C compiler and its lame libc.
They support neither %z nor %ll, so replacing %z with something else just creates
another porting issue. (At least they didn't last time I checked, which probably
was with VS2005 or VS2008.)
I've found it necessary to provide my own PRIuSZ macro and define it as "I64u"
on (MS && x86_64) and as "zu" elsewhere. I don't recall what MS && i386 needed,
possibly just "u" or "lu".
More information about the erlang-patches