I’m working with an embedded system where the exit() call doesn’t seem to exist.
I have a function that calls malloc and rather than let the program crash when it fails I’d rather exit a bit more gracefully.
My initial idea was to use goto however the labels seem to have a very limited scope (I’m not sure, I’ve never used them before “NEVER USE GOTO!!1!!”).
I was wondering if it is possible to goto a section of another function or if there are any other creative ways of exiting a C program from an arbitrary function.
void main() {
//stuff
a();
exit:
return;
}
void a() {
//stuff
//if malloc failed
goto exit;
}
Thanks for any help.
Options:
abort()(warning: this will not call atexit handlers).a()indicating error, and propagate that via error returns all the way back tomain.setjmp/longjmp. These are difficult to use correctly but they do provide what you asked for: the ability to transfer execution from anywhere in your program (not necessarily including a signal/interrupt handler, but then you probably wouldn’t be callingmallocin either of those anyway) to a specific point in yourmainfunction.