Ruby에서 인라인 C를 사용하여 매우 재귀적인 함수를 다시 작성하려고합니다. 나는 다음과 같은 코드를 사용하여 인라인 C에서 이것을 해내 노력하고Ruby/Inline C에서 정의되지 않은 인수 수락
def each_entity(*types)
# Do something and recurse.
end
: 그것은 루비 같을 것이다, 즉 함수는 인수의 정의되지 않은 번호를 받아
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가 적절하게 정의되었다고 확신한다. 왜냐하면 나는 경고를하지 않고 VALUE each_entity_c (int test) {...}'함수를 정의 할 수 있기 때문이다. – user2398029