【发布时间】:2012-07-09 13:03:23
【问题描述】:
我正在学习 SWIG,用于在 Python 中使用 C。我已经写了这个函数,但我不明白,为什么包装的myfunc 返回错误的浮点/双精度值:
mfuncs.c
#include <stdlib.h>
float myfunc(int n) {
float result;
result = 100 / n;
return result;
}
mfuncs.i
%module mfuncs
%typemap(out) double, float "$result = PyFloat_FromDouble($1);"
extern float myfunc(int n);
最后我得到 1107558400.0 而不是 33.33333。
>>> 导入 mfunc >>> mfuncs.myfunc(3) 1107558400.0 >>>错在哪里?
【问题讨论】:
-
对我来说,这看起来不像通常的 swig typemap 语法。你为什么要使用 typemaps 来转换 swig 无论如何都是正确的?
-
@Voo - 类型映射是合法的语法 - 它是 2 element typelist(不要与多参数类型映射混淆),但你说得对,它是不必要的。
-
@Flexo 我对他将其定义为字符串这一事实感到困惑,以前从未见过。对我来说似乎没有必要(我喜欢我的自动完成),但允许。顺便说一句,很好。