int setjmp (jmp_buf ponto)

Recebe: uma variável que irá indicar o ponto a partir do qual o código é executado quando a função longjmp().

Retorna: em sua primeira chamada com uma mesma variável, a função retorna zero, e após a primeira vez um valor diferente de zero.

Exemplo de uso da função:
									
//EXEMPLO setjmp()

#include <stdio.h>
#include <setjmp.h>
	
int main() {
	jmp_buf pulo;
	
	int controle = setjmp(pulo);
	
	printf("Ao infinito e além! %d\n", controle);
	
	if (controle == 0)
		longjmp(pulo, 42);
	
	return 0;
}
										
								
Saída do terminal:
									
			>clang-7 -pthread -lm -o main main.c
			>./main
			Ao infinito e além! 0
			Ao infinito e além! 42
									
								

void longjmp(jmp_buf ponto, int valor)

Recebe: uma variável do tipo jmp_buf, que indica para onde a função deverá saltar, e um valor numérico diferente de zero, o qual será utilizado pela função setjmp() para retornar o valor inteiro não igual a zero após a execução do primeiro salto.

Retorna: void, função sem retorno.

Exemplo de uso da função:

//EXEMPLO longjmp()

#include <stdio.h>
#include <setjmp.h>
	
int main() {
	jmp_buf pulo;
	
	int controle = setjmp(pulo);
	
	if (controle == 1) {
		printf("Eu pulo... ");
		controle = setjmp(pulo);
	}
	if (controle == 2) {
		printf("e pulo... ");
		controle = setjmp(pulo);
	}
	if (controle == 3) {
		printf("e pulo sem parar!!\n");
		controle = setjmp(pulo);
	}
	
	if (controle != 4)
		longjmp(pulo, controle + 1);
	
	return 0;
}
	
	
											
Saída do terminal:
											
			>clang-7 -pthread -lm -o main main.c
			>./main
			Eu pulo... e pulo... e pulo sem parar!!