On Thu, Nov 10, 2022 at 1:12 PM Jonathan Wakely via cfe-commits <cfe-comm...@lists.llvm.org> wrote: > > On Thu, 10 Nov 2022 at 17:58, Jonathan Wakely wrote: > > > > On Thu, 10 Nov 2022 at 17:52, Nick Bowler wrote: > > > It saddens me to see so much breakage happening in "modern C", a > > > language that has (until now) a long history of new language features > > > being carefully introduced to avoid these sort of problems. > > > > The features were introduced in 1999. > > Well, some of them were. Some more are coming now in C2x but the > problem has existed since C99 it's just that compilers "protected" > most users from having to fix their code at the time. But it's been > more than two decades and it's time to accept that missing prototypes, > implicit conversions between pointers and ints etc are a hazard and > should be diagnosed not ignored for the benefit of people who never > want to fix their questionable code.
Functions without prototypes were deprecated in ANSI C and came into ISO C as deprecated. They were obsoleted with the release of the 2nd edition of K&R C (circa 1978) when prototypes were introduced, IIRC. They've literally never been a recommended practice in standard C. Implicit function declarations and implicit int were outright removed from C99 without a deprecation period due to the security concerns they caused. ~Aaron