Hacker News new | ask | show | jobs
by ainar-g 768 days ago
There is a proposal to get this using the "defer" keyword into either the next C revision or the one after that[1].

[1]: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3199.htm.

4 comments

It seems that whenever ISO C invent their own imitation of some GNU feature, in order to foist onto other compilers, they fuck it up first.

VLA's, inline, variadic macros, ...

More recently, they gaffed by making alignment specification not a type attribute but, get this, a storage class specifier. Ouch!

That looks a lot like what Zig does.

One problem with the proposed defer there is that it has no way to interact with stack unwinding, which is part of the platform ABIs for handling exceptions. Maybe some alternative syntax, such as "defer_finally" could make the defer block act as both a regular defer block, and also explicitly add that block to the stack unwinding chain.

That would be sublime! Defer is something I've been wanting in C for 20 years. It makes resource management clear, easy to reason about, and concise.
you can implement a crappy version of defer with GNU extensions, I think? https://gist.github.com/cozzyd/a9eb2ddb9c8785ad5c60e3280b0ba...