c-在Ruby FFI中声明char数组



我有以下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)

我似乎没有正确地在回调中声明char数组。从C中数组在函数参数中的工作方式来看,我认为应该使用:pointer而不是[:char, 128]。但我不确定外国金融机构的特点。这里真正正确的语法是什么?

数组在C中不是按值传递的——它们是作为指向第一个元素的指针传递的,所以:pointer(或通常用于char *的任何东西)应该是正确的。

相关内容

  • 没有找到相关文章

最新更新