C言語の標準ライブラリ関数 setjmp() と longjmp() を呼び出すことで多段の関数呼出階層を飛び越えるジャンプ(いわゆるGOTO処理)を実現できます。しかしながら、現代的なプログラミングでは GOTO文 が忌避されるように、setjmp() と longjmp() を使ったジャンプは推奨されません。やむを得ず setjmp() と longjmp() で実装された既存のソースコードを理解するための助けとなることを目論んだ解説です。 多段の関数呼出階層 関数の中から下位の関数を呼び出して、その下位の関数の中から下位の下位の関数を呼び出して、その下位の下位の関数の中から下位の下位の下位の関数を呼び出す、といった構造 1. 単純なロングジャンプの例 1.1. サンプル・ソースコード #include <stdio.h> #include <stdlib.h> #include <s

