【发布时间】:2012-06-18 15:56:37
【问题描述】:
我想从我自己的 C 代码中调用 ruby 代码。万一出现异常,我必须 rb_protect 我调用的 ruby 代码。 rb_protect 看起来像这样:
VALUE rb_protect(VALUE (* proc) (VALUE), VALUE data, int * state)
所以proc 必须是一个接受VALUE 参数并返回VALUE 的函数。我必须调用很多不能以这种方式工作的函数。我怎样才能rb_protect他们不引发异常?
我曾想过使用Data_Make_Struct 将所有内容包装到一个ruby 对象中并在其上调用方法。 Data_Make_Struct 本身可能引发异常。我怎么rb_protectData_Make_Struct?
【问题讨论】:
标签: ruby ruby-c-extension