gpt4 book ai didi

c - 在 Ruby FFI 中声明 char 数组

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:19 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com