On Mon, Jan 02, 2017 at 04:09:59PM -0800, Paul Eggert wrote: > Bruno Haible wrote: > >I would vote for removing this sentence "Gnulib code can assume that standard > >internal types like size_t are no wider than long." The fix is easy nowadays > >(since MSVC now has <stdint.h>): Use intptr_t or ptrdiff_t or size_t as > >appropriate. > > It's not that easy for code that wants to print such integers, as %ld > doesn't suffice on MinGW and older POSIXish libraries don't support %jd etc. > Perhaps once Gnulib assumes C99-or-later libraries, and once somebody goes > through all the Gnulib code and checks it. In the meantime we should > probably leave something like that sentence in there, although we should > warn people about the MSVC issues. I installed the attached to try to do > that, and to try to clarify the issues about C89 vs C99 vs C11 that were in > Paul's question.
One strategy is to use PRIdPTR for ptrdiff_t and PRIdMAX or PRIuMAX (plus a cast) for other types. In one project of mine (which does not use Gnulib) I introduced a PRIuSIZE macro. This is not a standard macro, but I don't understand why not.