レスどうもです。
例外ですか・・・ためしにreturn -1だらけになったプログラムをC++で例外つかって書き直してみます・・。

setjmp、longjmpでやるとしたら
if( try() ) {
if( 〜〜 ) throw();
} else {
例外処理
}
っていうインターフェース用意すれば便利そうですね。

ところでC++の例外処理って戻るアドレスとかどうやって記憶してるんでしょうか・・?
グローバル変数みたいなのを使ってたらマルチスレッドで問題でそう・・
スタックに記憶するのは・・方法思いつかない・・
だとしたら例外専用にレジスタ1個つかうしか・・・困った・・。
コンパイラによって違うかもしれませんけど、誰か知りませんか?