News for hackers. Stuff that matters.
Re:Modern C for C++ Peeps by int_19h on Saturday January 07, 2023 @04:53PM (#34293285)
MSVC does not support it.

In general, any random C compiler is likely to not support that feature, because the way it interacts with function pointers makes it unnecessarily complicated.

Re:Modern C for C++ Peeps by WalterBright on Saturday January 07, 2023 @05:00PM (#34293357)
> unnecessarily complicated

Pascal could do it in the 1970s, and even Tiny Pascal could do it, see the listing for the compiler in BYTE.

https://archive.org/details/byte-magazine-1978-09

As for function pointers, a simple solution is to not allow them unless the function is declared `static`. `static` functions don't have a hidden static link.

Re:Modern C for C++ Peeps by int_19h on Saturday January 07, 2023 @11:59PM (#34296178)
The problem isn't doing it as such; ALGOL 60 could do nested functions just fine.

The problem is doing it in an ABI-compatible way when you already have an ABI. The gcc implementation of nested functions does that - they are compatible with regular function pointers - but at the cost of requiring executable stack on at least some platforms.

And for C compilers that aren't gcc, the question becomes: why partially implement a non-standard gcc feature?