Sujet : Re: Opinions on `defer`?
De : thiago.adams (at) *nospam* gmail.com (Thiago Adams)
Groupes : comp.lang.cDate : 08. Jan 2025, 21:25:46
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vlmn0a$2trcl$1@dont-email.me>
References : 1 2
User-Agent : Mozilla Thunderbird
On 08/01/2025 16:30, Tim Rentsch wrote:
Alexis <flexibeast@gmail.com> writes:
Hi all,
>
"Modern C" author Jens Gustedt has been posting on his blog about a
proposed `defer` feature (as provided by e.g. Zig and Go), the most
recent being:
>
https://gustedt.wordpress.com/2025/01/06/simple-defer-ready-to-use/
>
What do people here think about having such a feature in C?
The issue being addressed is one well worth addressing.
What is the issue in your opinion?
The proposed solution ('defer') is awful. If this feature is
being considered for the C standard it should be rejected
out of hand.
Why?
I will tell what is the issue it solves in my opinion.
If you don't have static analysis to guide you on where to free resources, defer helps prevent human error by ensuring resources are released properly. With defer, you only need to specify the cleanup in one place, reducing the chances of forgetting it elsewhere. This makes the code easier to maintain.
However, I think this problem is better addressed with static analysis, which provides stronger safety guarantees.(This is what I have done in Cake, with static analysis)
If there's a better solution, is defer unnecessary?
I think defer still useful to write less code, to add the same information in just one place.
Sample:
{
FILE * f = fopen(...);
if (f == null) return 1;
defer fclose(f);
...
more code..
...
}