setjmp
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at setjmp.
Saves the current state of the program.
Syntax
int setjmp(
jmp_buf env
);
Parameters
env
Variable in which environment is stored.
Return Value
Returns 0 after saving the stack environment. If setjmp
returns as a result of a longjmp
call, it returns the value
argument of longjmp
, or if the value
argument of longjmp
is 0, setjmp
returns 1. There is no error return.
Remarks
The setjmp
function saves a stack environment, which you can subsequently restore, using longjmp
. When used together, setjmp
and longjmp
provide a way to execute a non-local goto
. They are typically used to pass execution control to error-handling or recovery code in a previously called routine without using the normal calling or return conventions.
A call to setjmp
saves the current stack environment in env
. A subsequent call to longjmp
restores the saved environment and returns control to the point just after the corresponding setjmp
call. All variables (except register variables) accessible to the routine receiving control contain the values they had when longjmp
was called.
It is not possible to use setjmp
to jump from native to managed code.
Note setjmp
and longjmp
do not support C++ object semantics. In C++ programs, use the C++ exception-handling mechanism.
For more information, see Using setjmp and longjmp.
Requirements
Routine | Required header |
---|---|
setjmp |
<setjmp.h> |
For additional compatibility information, see Compatibility in the Introduction.
Example
See the example for _fpreset.
.NET Framework Equivalent
Not applicable. To call the standard C function, use PInvoke
. For more information, see Platform Invoke Examples.