|
From: | Christian Jullien |
Subject: | Re: [Tinycc-devel] match formats and arguments exactly |
Date: | Fri, 21 Jun 2019 15:33:24 +0200 |
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----- > On 21 Jun 2019, at 14:56, Christian Jullien <address@hidden> 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 |
[Prev in Thread] | Current Thread | [Next in Thread] |