У меня есть следующий код C:
typedef void (*mycallback) (char buf[128]);
void take_callback(mycallback cb)
{
}
Я написал эквивалентные декларации Ruby FFI, как показано ниже (следующий совет для структур на FFI wiki ):
callback :mycallback, [[:char, 128]], :void
attach_function :take_callback, [:mycallback], :void
Когда я запускаю его, я получаю следующую ошибку:
`find_type': unable to resolve type '[:char, 128]' (TypeError)
Кажется, я неправильно объявляю массив символов в обратном вызове.Из того, как массивы работают в аргументах функций в C, я думаю, что я должен использовать :pointer
вместо [:char, 128]
.Но я не уверен насчет особенностей FFI.Какой действительно правильный синтаксис здесь?