【发布时间】:2014-10-23 07:58:29
【问题描述】:
我目前正在编写我的第一个 XS 模块(只是 C 数学库的一个包装器)并取得了不错的成功。最大的问题是文档很难理解和/或不完整。
我已经成功地在 XS 中编写了一个构造函数,并从库中实现了一些函数作为方法调用。效果很好。
现在我也想实现一个过程接口。出于这个原因,我需要知道它是否是一个方法调用。如果它是一个方法调用,则用函数计算的数字存储在实例中,如果它是对函数的过程调用,它的第一个参数就是一个数字。 这是余弦函数的当前代码:
double
cos(...)
CODE:
SV *arg = newSVsv(ST(0));
if (sv_isobject(arg)) {
HV *self_hv = MUTABLE_HV(SvRV(arg));
SV **callback_ptr = hv_fetchs(self_hv, "Number", 0);
SV *zahl = *callback_ptr;
}
else {
SV *zahl = newSVnv(arg);
}
double x = SvNV(zahl);
RETVAL = cos(x);
OUTPUT:
RETVAL
【问题讨论】:
-
你好像忘了问一个问题。你甚至没有暗示一个问题。你想要什么?
-
注意:您使用
ST(0)而不检查您有多少参数。 -
我的问题是:当我将它作为没有 if 和整个 else 块的方法调用时,它可以工作。所以我想我的问题出在 if 条件的某个地方。注意:代码甚至没有编译,它在分配双精度的行上抛出一个错误(第一次使用但没有声明,所以我假设 if 条件一定是这里的问题
-
首先,你没有提到有错误。现在,你不提它是什么?我们无法读懂你的想法(或你的屏幕)!