Ruby 2.3.0 リファレンスマニュアル > 関数一覧 > rb_define_method
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(), int argc)
クラスklassのインスタンスメソッドnameを定義します。
argcはCの関数へ渡される引数の数(と形式)を決めます.
argcで指定した値がそのメソッドの引数の数になります。 16個以上の引数は使えません,
VALUE func(VALUE self, VALUE arg1, ... VALUE argN)
引数はCの配列として第二引数に入れて渡されます。 第一引数は配列の要素数です。
VALUE func(int argc, VALUE *argv, VALUE self)
引数はRubyの配列に入れて渡されます。
VALUE func(VALUE self, VALUE args)
rb_scan_args も参照