top | item 40389185

(no title)

ainar-g | 1 year 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.

discuss

order

kazinator|1 year ago

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!

Dwedit|1 year ago

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.

tredre3|1 year ago

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.