Tôi muốn gọi mã ruby từ mã C của riêng tôi. Trong trường hợp ngoại lệ được nâng lên, tôi phải rb_protect mã ruby tôi gọi. rb_protect trông như thế này:cách rb_protect mọi thứ trong ruby
VALUE rb_protect(VALUE (* proc) (VALUE), VALUE data, int * state)
Vì vậy proc
có phải là một chức năng mà phải mất VALUE
đối số và trả VALUE
. Tôi phải gọi rất nhiều chức năng không hoạt động theo cách đó. Làm cách nào để tôi có thể rb_protect
họ từ việc tăng ngoại lệ?
Tôi đã nghĩ đến việc sử dụng Data_Make_Struct
để bọc mọi thứ vào một đối tượng ruby và các phương thức gọi trên đó. Data_Make_Struct
có thể tự tăng ngoại lệ. Làm cách nào để tôi rb_protect
Data_Make_Struct
?