Go to the first, previous, next, last section, table of contents.


例 1: パラメータなし、返却値なし

最初の明快な例は、プロセスの UID を出力するために、Perl subの PrintUID を呼びます。

sub PrintUID
{
    print "UID is $<\n" ;
}

と、これを呼ぶ C 側です

void
call_PrintUID()
{
    dSP ;

    PUSHMARK(sp) ;
    perl_call_pv("PrintUID", G_DISCARD|G_NOARGS) ;
}

単純でしょう。

この例についていくつか注意点をあげておきましょう。

  1. `PrintUID' に引数を渡しませんので、 G_NOARGS を指定できます。
  2. 今のところ、 dSPPUSHMARK(sp) は無視してください。これ については、次の例でお話します。
  3. `PrintUID' から返されるものは、特に必要ありませんので、 G_DISCARD を指定しています。 `PrintUID' が何か値を返すように 変更されても、 G_DISCARD を指定しておくと、 perl_ call_pv から制御が戻るときに、その値が捨てられることになります。
  4. G_DISCARD を指定しましたので、 perl_call_sv からの返却値を チェックする必要はありません。常に `0' となります。
  5. perl_call_pv が使われていますから、Perl sub は C の文字列として表 現されています。


Go to the first, previous, next, last section, table of contents.

検索式: