Don't misunderstand me, this check is a very valuable addition. For an uncounted number of years I use any possible warnings and my code (almost) pass with all sanitizer, splint, code analyzers ... You should also understand that many code slowly moved from K&R to ANSI, to C98 .. C11 and it's a pain to port from one C version to another especially when you're not the original author. If you always do this check, suddenly a code w.o warning you develop with tcc will display hundreds or thousands new warnings nobody will have the energy to fix (very likely with a ugly cast on the argument). Rigid (or pedantic) developers, as I am, certainly would like to activate -Wformat and fix incorrect format string. Others, will be very happy to see no more warning than they use to have.
So I personally vote to add this check if it protest only with -Wformat. I can also accept it exists only with -std=c11 even if it's not the gcc behavior. IMHO gcc compatibility (or VC++ on Windows) should be a goal for tcc. We are many to use tcc for its fast development cycle but gcc/vc remains the only choice for release. From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=orange...@nongnu.org] On Behalf Of ian Sent: Friday, June 21, 2019 16:54 To: Tinycc-devel@nongnu.org Subject: Re: [Tinycc-devel] match formats and arguments exactly Hi Pascal, I *know* that (including the no-way part). And I *know* too that this misuse is sometimes what's expected by developers... Anyway, I don't think it's desirable that kinds of pointers are checked. Still my humble opinion. -- ian (i...@sibian.fr) -- développeur compulsif Le 21/06/2019 à 16:47, Pascal Cuoq a écrit : On 21 Jun 2019, at 16:10, ian <sibian0...@gmail.com> wrote: Hello,IMHO, considering that flexibility is what I love in C programming, and that this checking should be printf job (in that case), Unfortunately, this is not how printf, or other variadic functions, work. The way they work is: the non-variadic arguments (in the case of printf, the format string) indicate what variadic arguments should be consumed with what type. If the types of the arguments actually passed do not match the types indicated by the non-variadic arguments, the behavior is undefined. Not only printf, and other variadic functions, have no obligation to warn you if you misuse them, but on every existing platform (including the exotic platforms where a pointer is not a pointer), they actually have no way to warn you that you are misusing them. _______________________________________________ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel