On Tue, Mar 16, 2021 at 11:26:29AM +0100, Jakub Jelinek wrote: > On Tue, Mar 16, 2021 at 11:20:05AM +0100, Rene Kita wrote: > > % gcc -Wall -Wpedantic main.c > > main.c: In function 'main': > > main.c:10:16: warning: format '%hn' expects argument of type 'short int *', > > but argument 2 has type 'short unsigned int *' [-Wformat=] > > 10 | printf("p: %hn\n", p); > > | ~~^ ~ > > | | | > > | | short unsigned int * > > | short int * > > | %hn ^^^^^
> > The warning for line 10 suggests to use '%hn' as format specifier which > > is already used and the wrong one. AFAIK the correct format specifier > > would be '%p' here. > > No, the warning tells you that argument for %hn should have short int * > type, not unsigned short int *. I understand this and I don't say the warning is wrong but the suggested solution. I have highlighted the part of the output I'm talking about above. If you replace the '%hn' with e.g. '%d' you get the same suggestion: main.c: In function 'main': main.c:10:15: warning: format '%d' expects argument of type 'int', but argument 2 has type 'short unsigned int *' [-Wformat=] 10 | printf("p: %d\n", p); | ~^ ~ | | | | int short unsigned int * | %hn ^^^^^ > Jakub Rene