#include #include #include int main() { // int i = 0; // might not work - bad // volatile int i = 0; // always work - good // static int i = 0; // always work - good std::atomic i = 0; // always work - best sigjmp_buf buf; int ret = sigsetjmp(buf, 1); // almacena máscara de señales switch (ret) { case 0 : printf("|-> "); break; // primer retorno case 1 : printf("--> "); break; // segundo retorno default: printf("Error: sigsetjmp(buf, 1) = %i\n", ret); break; } printf("%i ", i++); if (i < 5) siglongjmp(buf, 1 /* no cero */); // salto no local puts(""); }