c - 在 Ruby FFI 中声明 char 数组

标签 c ruby callback ruby-ffi

我有以下 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] 。但我不确定 FFI 的特殊性。这里真正正确的语法是什么?

最佳答案

在 C 中数组不是按值传递的——它们作为指向第一个元素的指针传递,因此 :pointer (或者通常用于 char * 的内容) >) 应该是正确的。

关于c - 在 Ruby FFI 中声明 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9985372/

相关文章:

c - 在链表末尾插入一个节点,.exe 崩溃

c - 使用设置的方法有哪些

Ruby - 包括两个模块,它们都有一个同名的子模块

iphone - CoreAudio Audio Graph 中的自定义音频效果 - 渲染回调

javascript - 如何将 SQLite 结果传递给 Nodejs 中的回调

c# - 我可以加快从 C++ Dll 到 C# 的回调吗?

c - 包含数组包含相同结构的元素的结构

c - 一个简单的 x86 反汇编器开源内核使用

ruby - 如何还原 gem 中的更改

ruby-on-rails - Rails 4 - 如何根据当前路线显示相同 Controller 操作的不同 View ?