<setjmp.h>

<setjmp.h>


Include the standard header <setjmp.h> to perform control transfers that bypass the normal function call and return protocol.

#define setjmp(jmp_buf env) <int rvalue>

typedef a-type jmp_buf;
void longjmp(jmp_buf env, int val);

jmp_buf

typedef a-type jmp_buf;

The type is the array type a-type of an object that you declare to hold the context information stored by setjmp and accessed by longjmp.

longjmp

void longjmp(jmp_buf env, int val);

The function causes a second return from the execution of setjmp that stored the current context value in env. If val is nonzero, the return value is val; otherwise, it is 1.

The function that was active when setjmp stored the current context value must not have returned control to its caller. An object with dynamic duration that does not have a volatile type and whose stored value has changed since the current context value was stored will have a stored value that is indeterminate.

setjmp

#define setjmp(jmp_buf env) <int rvalue>

The macro stores the current context value in the array designated by env and returns zero. A later call to longjmp that accesses the same context value causes setjmp to again return, this time with a nonzero value. You can use the macro setjmp only in an expression that:

  • has no operators
  • has only the unary operator !
  • has one of the relational or equality operators (==, !=, <, <=, >, or >=) with the other operand an integer constant expression

You can write such an expression only as the expression part of a do, expression, for, if, if-else, switch,, or while statement.


See also the Table of Contents and the Index.

Copyright © 1992-2006 by P.J. Plauger and Jim Brodie. All rights reserved.

Last modified: 2013-12-21



Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus