我正在使用MacRuby中的C Framework,它具有结构
int CPhidget_getSerialNumber(CPhidgetHandle phid,int * serialNumber)
您可以查看完整文档here(如果您有兴趣)。
在MacRuby中,我尝试了以下内容:
i = CPhidget_getSerialNumber(@encoder, nil)
以上给我一个号码,但不是序列号。
CPhidget_getSerialNumber(@encoder, i)
这给我一个错误说明:预期的Pointer实例,得到'0'(Fixnum)(TypeError)(这并不让我感到惊讶)。
所以我的主要问题是:MacRuby中是否存在等效的C指针?
答案 0 :(得分:2)
MacRuby有一个Pointer类,可以代表C指针。所以,你可以这样做:
i = Pointer.new(:int)
CPhidget_getSerialNumber(@encoder, i)
然后,要从指针中提取结果(即取消引用它),您可以使用Ruby的数组访问语法:
i[0] #=> value from CPhidget_getSerialNumber