Chapter Contents |
Previous |
Next |
setjmp |
Portability: | ISO/ANSI C conforming, UNIX compatible |
SYNOPSIS | |
DESCRIPTION | |
RETURN VALUE | |
CAUTION | |
EXAMPLE | |
RELATED FUNCTIONS | |
SEE ALSO |
SYNOPSIS |
#include <setjmp.h> int setjmp(jmp_buf env);
DESCRIPTION |
setjmp
defines a target for a nonlocal
goto
.
The call to
setjmp
always returns 0. If
another routine, called later by the caller of
setjmp
, issues the call
longjmp(env, code)
, the earlier call to
setjmp
is
resumed. This time,
setjmp
returns the
value contained in the
code
argument to
longjmp
.
See blkjmp for more information on saving the signal mask as a part of a
setjmp
operation and restoring it as part of a longjmp
operation. Also see
blkjmp for more information on executing functions
in ARMODE.
RETURN VALUE |
A true return from
setjmp
always produces a 0. When control returns from
setjmp
because
longjmp
was used,
the return value is nonzero.
CAUTION |
Variables of storage class
auto
and
register
, whose values
have been changed between the
setjmp
and
longjmp
calls, have indeterminate values on return
to
setjmp
unless declared volatile.
EXAMPLE |
#include <stdio.h> #include <setjmp.h> #include <stdlib.h> jmp_buf env; void dummy(); main() { int ret; if ((ret = setjmp(env)) != 0) { fprintf(stderr, "longjmp called with value %d\n", ret); exit(1); } dummy(); fprintf(stderr, "longjmp was not called.\n"); } void dummy() { puts("Entering dummy routine."); longjmp(env, 3); puts("Never reached."); }
RELATED FUNCTIONS |
SEE ALSO |
Chapter Contents |
Previous |
Next |
Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.