3 ms·
It is C, of course it is going to have goto's in it. How else are you going to handle error conditions? Copy and paste the error code a dozen times within a sin
by UnoriginalGuy 14y ago
It is C, of course it is going to have goto's in it. How else are you going to handle error conditions? Copy and paste the error code a dozen times within a single function?
(hint: C doesn't support exceptions)
You could use longjmp/setjmp but those have a lot of the same issues that people claim goto has. In fact worse in several ways, since while goto makes it hard to follow the program flow, longjmp makes it /impossible/.
- derleth 14y ago> since while goto makes it hard to follow the program flow, longjmp makes it /impossible/. Only if you don't use it tastefully. It can be a nice way to bail out of a recursive function with an error code, which is precisely how I've used it. Really, it looks exactly the same as a try ... catch block in that C++/Java/C# language everyone's on about now.
- 4ad 14y agoSetjmp is great for reseting a state machine, and many things are modeled as state machine.
- joshguthrie 14y agoNo exceptions? What a conondrum I find myself faced with... What about this snippet: if (error_return) { printf("My error"); return; } Clearer than a goto, no? And see, no exceptions ma'! (Oh yeah, and longjmp/setjmp are the worst ideas in the world...)