The setjmp macro saves its calling environment in its jmp_buf argument for later use by the longjmp function.
If the return is from a direct invocation, the setjmp macro returns the value zero. If the return is from a call to longjmp function, the setjmp macro returns a nonzero value.
An invocation of the setjmp macro shall appear in one of the following contexts:
the entire controlling expression of a selection or iteration statement: |
one operand of a relational or equality operator with the other operand an integral constant expression, with the resulting expression being the entire controlling expression of a selection or iteration statement: |
the operand of a unary ! operator with the resulting expression being the entire controlling expression of a selection or iteration statement: or |
the entire expression of an expression statement (possibly cast to void). |