7

Pure Perl には複雑なエンコーディング関数があり、パフォーマンスを向上させるために XS に変換しています。

XS に変換している関数は、再帰的に自分自身を呼び出す必要があります。["man perlcall" のおかげで] call_sv を使用して Pure Perl 関数を呼び出す方法を確認できます。

しかし、XS 内から自分自身 (またはその他の XS 関数) を呼び出すにはどうすればよいのでしょうか?

(PS効率は非常に望ましいです...)

誰かヒントをくれませんか?それとも例?Ppp-お願いします!

更新: 最初の答えは完全に正しかったです。再帰的な純粋な C 関数の呼び出しは問題なく機能します。

4

1 に答える 1

10

しないでください。XS は、C 関数に Perl インターフェイスを提供するメカニズムです。XS 関数を C 関数から呼び出さないでください (使用するcall_sv場合など)。XS 関数から C 関数を呼び出します。

再帰的な C 関数を記述し、XS コードの外側 (MODULE =行の前または別の 内.c) に保持します。薄い XS ラッパーから呼び出します。

于 2013-04-19T06:08:51.927 に答える