logoalt Hacker News

maccardyesterday at 8:40 AM2 repliesview on HN

This example is exactly why RAII is the solution to this problem and not defer.


Replies

mort96yesterday at 9:13 AM

I love RAII. C++ and Rust are my favourite languages for a lot of things thanks to RAII.

RAII is not the right solution for C. I wouldn't want C to grow constructors and destructors. So far, C only runs the code you ask it to; turning variable declaration into a hidden magic constructor call would, IMO, fly in the face of why people may choose C in the first place.

miguel_martinyesterday at 9:09 AM

defer is literally just an explicit RAII in this example. That is, it's just unnecessary boiler plate to wrap the newResource handle into a struct in this context.

In addition, RAII has it's own complexities that need to be dealt with now, i.e. move semantics, which obviously C does not have nor will it likely ever.

show 1 reply