Click here to Skip to main content
15,887,344 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi everybody!

I know that by using the "setjmp" and "longjmp" -functions one can implement exceptions in C.

Does anyone know of a nice implementation of such a thing.
Here on Code Project I was not able to find one, but surely someone has already done it.

With best regards
HENNING
Posted
Updated 12-Jan-11 21:55pm
v2
Comments
Dalek Dave 13-Jan-11 3:55am    
Edited for Readability.

 
Share this answer
 
Comments
Dalek Dave 13-Jan-11 3:55am    
Good Find.
Kasson 13-Jan-11 3:57am    
Thanks Dalek
A goto statement implements a local jump of program execution, and the longjmp() and setjmp() functions implement a nonlocal, or far, jump of program execution. Generally, a jump in execution of any kind should be avoided because it is not considered good programming practice to use such statements as goto and longjmp in your program. A goto statement simply bypasses code in your program and jumps to a predefined position. To use the goto statement, you give it a labeled position to jump to. This predefined position must be within the same function. You cannot implement gotos between functions. When your program calls setjmp(), the current state of your program is saved in a structure of type jmp_buf. Later, your program can call the longjmp() function to restore the programs state as it was when you called setjmp().Unlike the goto statement, the longjmp() and setjmp() functions do not need to be implemented in the same function. However, there is a major drawback to using these functions: your program, when restored to its previously saved state, will lose its references to any dynamically allocated memory between the longjmp() and the setjmp(). This means you will waste memory for every malloc() or calloc() you have implemented between your longjmp() and setjmp(), and your program will be horribly inefficient. It is highly recommended that you avoid using functions such as longjmp() and setjmp() because they, like the goto statement, are quite often an indication of poor programming practice.
 
Share this answer
 
Comments
Frankie-C 17-May-15 17:54pm    
This thread is 4 years old...

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900