function rb_define_method

[edit]
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(), int argc)

クラスklassのインスタンスメソッドnameを定義します。

argcはCの関数へ渡される引数の数(と形式)を決めます.

argcが0以上の時

argcで指定した値がそのメソッドの引数の数になります。 16個以上の引数は使えません,

VALUE func(VALUE self, VALUE arg1, ... VALUE argN)

argcが-1のとき

引数はCの配列として第二引数に入れて渡されます。第一引数は配列の要素数です。

VALUE func(int argc, VALUE *argv, VALUE self)

argcが-2のとき

引数はRubyの配列に入れて渡されます。

VALUE func(VALUE self, VALUE args)

rb_scan_args も参照