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

Reply via email to