On Tue, Mar 05, 2019 at 11:59:30AM -0800, Joe Perches wrote: > Many of the -Wformat warnings are bogus too. > > There's nothing wrong with using %x for a unsigned int > of less than long size. (u8/u16) I believe you to be incorrect. 6.5.2.2 Function calls 7 If the expression that denotes the called function has a type that does include a prototype, the arguments are implicitly converted, as if by assignment, to the types of the corresponding parameters, taking the type of each parameter to be the unqualified version of its declared type. The ellipsis notation in a function prototype declarator causes argument type conversion to stop after the last declared parameter. The default argument promotions are performed on trailing arguments. I could define a calling convention for my CPU which says to pack u8s and u16s as tightly as possible in registers (or on the stack), rather than the prevailing calling convention of having each argument take up at least one register-sized slot.