Article View: fj.lang.perl
Article #83XS と可変長引数
From: Tadashi Matsumoto(松本 匡史)
Date: Tue, 17 Feb 1998 00:00
Date: Tue, 17 Feb 1998 00:00
47 lines
2224 bytes
2224 bytes
松本@日興システムセンターと申します。
Perl5 の XS を使って、ある C ライブラリとのインターフェースとなる
モジュールを作成しています。
そこで可変長引数が使われているのですが、perl から可変長引数を
受け取って C の可変長引数の関数をよびだす方法がよくわかりません。
.xs ファイルで
-------------------------------
MODULE = Tib PACKAGE = Tib
Tib_Errorcode
Initialize()
CODE:
{
RETVAL = Tib_Initialize(TIB_PROPERTY_EOA);
}
OUTPUT:
RETVAL
--------------------------------
というような感じでやるんだと思うんですが、
C での関数定義は、
Tib_Errorcode Tib_Initialize ( Tib_Property property , ... )
※ Tib_Errorcode, Tib_Property は enum です。
なので、本当は可変長引数を取りたいのです。
# perl 側で可変長引数をとって C 側を可変長引数で呼び出したい。
「新 Perl の国へようこそ」の 12.6 に可変長引数の項はあるのですが、
これは perl 関数で可変長引数をとって、
C の"固定長引数"の関数を呼び出す方法のようです。
comp.lang.c A to FAQ には、
| 15.13: 実行時に、引数リストをつくって関数を呼び出すことができるか。
|
| A: 動くことが保証される方法も移植性の高い方法もない。
とあるので見通し暗い気もします。
どなたかうまいやり方をご存知ないでしょうか?
--
松本匡史@日興システムセンター tadashi@sso.nsc.nikko.co.jp
Technical Details
Message-ID:
<6cbfvn$nki@melon.sso.nsc.nikko.co.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 1043e7,bd18d32ce1cb4e3c,start X-Google-Attributes: gid1043e7,public X-Google-Thread: 106434,bd18d32ce1cb4e3c,start X-Google-Attributes: gid106434,public From: tadashi@sso.nsc.nikko.co.jp (Tadashi Matsumoto(松本 匡史)) Subject: XS と可変長引数 Date: 1998/02/17 Message-ID: <6cbfvn$nki@melon.sso.nsc.nikko.co.jp> X-Deja-AN: 325806386 Distribution: world X-Nsubject: XS $B$H(B $B2DJQD90z?t(B Content-Type: text/plain; charset=ISO-2022-JP Organization: The Nikko System Center Ltd. Japan Mime-Version: 1.0 Newsgroups: fj.lang.perl,fj.lang.c