On Thu, 25 Aug 2022, David Laight wrote: > From: Joseph Myers > > Sent: 25 August 2022 15:39 > > > > On Thu, 25 Aug 2022, Linus Torvalds wrote: > > > > > That's a small detail that yes, we've tried to avoid the absolute > > > humongous mess that the C standard library has with their horrendous > > > 'PRId*' mess, but honestly, it's just a tiny detail. > > > > I've not yet implemented it for glibc or for GCC format checking, but C23 > > adds 'wN' format length modifiers so you will be able to e.g. use "%w64d" > > with printf to print an int64_t and won't need those PRI macros any more. > > Is that meant to work regardless of whether the type is > int, long or long long provided the size is correct? > > Or does it require the compiler know which type inttypes.h > uses for uint32_t and uint64_t? The type passed needs to be that used for the relevant stdint.h typedef, not another of the same size. (For format checking, that means the compiler needs to know what the types used in stdint.h are.) It's now required that if int32_t exists, int_least32_t must have the same type, so int_least32_t can also be used with that format (and there are 'wfN' formats for int_fastN_t / uint_fastN_t as well). -- Joseph S. Myers joseph@xxxxxxxxxxxxxxxx