Hacker News new | ask | show | jobs
by int_19h 1254 days ago
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.

1 comments

> 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.

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?