Re: Printing of off_t and size_t values

Klaus Klein <[email protected]>
Newsgroups gmane.os.netbsd.devel.general
Message-ID <[email protected]>
Martin Husemann <[email protected]> writes:

>         /*
>          * To printf 64 bit quantities, use %ll and cast to (long long).
>          */
>         printf("The size of %s is %lld\n", p, (long long)sb->st_size);
> 
> Nowadays we can do better. I suggest to change this into:
> 
>         /*
>          * To printf size_t quantities, use %zd:
>          */
>         printf("The size of %s is %zd\n", p, sb->st_size);

(This may be a bad example item to pick on, as st_size is an off_t.)
Being unsigned, size_t should be formatted using %zu.

>         /*
>          * To printf off_t (or other 64 bit) quantities, use PRId64
>          * from <inttypes.h>:
>          */
>         printf("Read error at offset %" PRId64 "\n", o);
> 
> Is that OK?
> One option is to leave out the first part and use PRId64 (and
> friends) always.

Well, if we are really set to go C99/POSIX-2001 here, I think it would
be preferable not to have a 64-bit assumption but cast to intmax_t and
format using either %jd or PRIdMAX.


- Klaus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.