Hello,

IMHO, considering that flexibility is what I love in C programming, and
that this checking should be printf job (in that case), and many other
things, I agree with Christian.
Even more, still IMHO, a pointer is a pointer, no matter actually how it
will be interpreted later.

Regards

-- ian (i...@sibian.fr)
-- développeur compulsif
Le 21/06/2019 à 15:33, Christian Jullien a écrit :
>
> If I read you correctly, you want to protest if type does not strictly
> match format directive.
>
>  
>
> This is something even gcc does NOT ensure by default:
>
>  
>
> #include <stdio.h>
>
> #include <stdlib.h>
>
>  
>
> int
>
> main() {
>
>         int i = 256;
>
>         const char* s = "Hello";
>
>         const void* p = s;
>
>  
>
>         printf("%x\n", i);
>
>         printf("%u %s\n", i, p);
>
> }
>
>  
>
>  
>
> $ gcc -std=c11  foo.c
>
> $ => Ok
>
>  
>
> Only -Wformat (or -Wall) shows a warning on the 2nd printf, printf of
> i (a signed) is always Ok.
>
>  
>
> $ gcc -std=c11 -Wall foo.c
>
> foo.c: In function 'main':
>
> foo.c:11:21: warning: format '%s' expects argument of type 'char *',
> but argument 3 has type 'const void *' [-Wformat=]
>
>          printf("%u %s\n", i, p);           
>                                                        ~^                     
>                                                         
> %p       
>
>  
>
> -----Original Message-----
> From: Pascal Cuoq [mailto:c...@trust-in-soft.com]
> Sent: Friday, June 21, 2019 15:17
> To: jull...@eligis.com; tinycc-devel@nongnu.org
> Subject: Re: [Tinycc-devel] match formats and arguments exactly
>
>  
>
>  
>
> > On 21 Jun 2019, at 14:56, Christian Jullien <eli...@orange.fr> wrote:
>
> >
>
> > This is a valuable check but IMHO, it should be controlled by
> -Wformat (as
>
> > GNU gcc) and set of false by default.
>
> > Otherwise, I suspect tcc users will have a lot a new warnings.
>
>  
>
> I'm not implementing a new warning in TCC. I am only ensuring, by
> following C11 7.21.6.1:8 to the letter, that the TCC source code
> passes the strictest such checks that a C compiler could have, and
> also that a very exotic C compiler does not produce a non-functional
> binary when compiling TCC.
>
>  
>
> Considering the amount of code that good warnings represent, I think
> that a C compiler can either be tiny, or provide helpful warnings. The
> patches I have been sending, including the last one, only make TCC not
> exhibit undefined behavior, a more manageable goal that only requires
> small changes and do not make TCC significantly larger.
>
>  
>
> Pascal
>
>
>
> _______________________________________________
> Tinycc-devel mailing list
> Tinycc-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/tinycc-devel

_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to