我有以下问题。我们必须将回调函数传递给 C 代码。如果函数是同一个模块中的Cython函数,情况就很简单了
在赛通:
def callme(int x):
c_callme(x, <int (*)(int)>&callbackme)
cdef int callbackme(int x):
print <int> x
return <int>x
在 C 中:
int c_callme(int x, int (*f)(int))
{
printf("---%d\n",x);
printf("--%d\n",f(x));
return x;
}
问题如下:我们想以最 Pythonic 的方式概括此代码,以便它也可以接受 Python 函数作为回调参数(当然,需要一些额外的层),以及来自另一个模块的 C/Cython 函数。我想,对于来自单独模块的 C/Cython 函数,必须获取这些函数的地址(转换为 long int?),对于 Python 函数,需要某个包装器