threads.xsを見ていて、JMPENVまわりのマクロが気になったのでほげってみる。どうやらJMPENVマクロはevalやPerl_croakに関係するようだが、今回はそのあたりには触れずに、純粋にJMPENVマクロの中身と使われ方を見てみる。 1. setjmpとlongjmp Perlにおけるsetjmpとlongjmpを見る前に、まずはsetjmpとlongjmpの使い方を思い出すためにちょっとだけ手を動かす。環境はVC9。 sj.c #include <stdio.h> #include <setjmp.h> jmp_buf env; void aa (void) { int i = 0; while (1) { if (i == 100) { longjmp (env, i); } i++; } } int main