svn commit: r344960 - head/sys/powerpc/powerpc

Alexey Dokuchaev danfe at freebsd.org
Mon Mar 11 10:41:39 UTC 2019


On Mon, Mar 11, 2019 at 08:18:01PM +1100, Bruce Evans wrote:
> ...
> - poor formatting from %p.  %p is guaranteed to bad for formatted output.
>    It is specified to give an (any) implementation-defined sequence of
>    printing characters.  To use it except for low quality debugging
>    output, not quite as above (the above attempts medium quality, with
>    some alignment of fields but no attention to field widths for number
>    values), you first have to know what the implementation defines,
>    then don't use it when it is unsuitable.  It is easiest to never use
>    it.  In FreeBSD, printf(3) documents its format as being as if it
>    is %#x or %#lx.  This gives no control over the field width.

Yeah, this had annoyed me before, I recall some utilities suffer from
broken formatting because of %p.

> Conversion of pointers to uintmax_t or intmax_t gives full control
> over the format, just like for converted integer types.  This is not
> quite easier and clearer for pointers.  3 casts are needed to go from
> an arbitrary pointer to a uintmax_t.  First to const volatile void *
> (not to plain void *, since that gives cast-qual warnings if the
> pointer is const or volatile).  Then to uintptr_t.  Then to uintmax_t.

Thanks for the insight Bruce.

./danfe


More information about the svn-src-all mailing list