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.
[1]: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3199.htm.
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!
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.