RubyでインラインCを使用して再帰的な関数を書き直そうとしています。私は次のコードを使用してインラインCでこれを模倣しようとしていますRuby/Inline Cで未定義の引数を受け入れる
def each_entity(*types)
# Do something and recurse.
end
:それはRubyで次のようになります。すなわち機能は、引数の未定義の数を受け入れる
VALUE each_entity_c(int argc, VALUE *argv)
{
// ...
}
をしかし、これは得コンパイルエラー:
inline.rb:486:in `ruby2c': Unknown type "VALUE *" (ArgumentError)
これはCでこれを行う正しい方法ですか?もしそうなら、このエラーの原因は何でしょうか?もしそうでなければ、どうやって行なわれますか?
「VALUE」はどこで宣言しましたか? – asaelr
Cの '...'はあなたが望むことをしませんか? – prelic
@asaeler、VALUEはRuby Cコアで定義されています。 - "Cでは、すべてのRuby変数の型はVALUEです。これはRubyオブジェクトへのポインタか即値です"([Pickaxe](http:// rubycentral.com/pickaxe/ext_ruby.html))。 'VALUE each_entity_c(int test){...}'関数を定義することができますので、ここではVALUEが適切に定義されていると確信しています。 – user2398029