複数ファイルをビルド対象とした XS の開発について,あまり手間をかけないシンプルで効果的な方法を書いていきます。自分の経験をもとに書きますのでベストプラクティスではありませんが。 余談(SV*() マクロの sideeffect にやられた話) state_stack という配列に state を整数値でスタックとして格納していて,スタックから過去の state を取り出そうとしたんです。 んで(わりと素直に) state = SvIV(av_pop(state_stack)); と書いたら,2つずつスタックから pop されてしまいました*1。 XS hacker なら当たり前な話ですけど,SV*() というのは一見関数然としてますがマクロなんです。 #define SvIV(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) こんな形で,いずれのケースに