【发布时间】:2010-03-15 12:02:06
【问题描述】:
我想在 Pyrex 中定义初始化的 C 数组,例如相当于:
unsigned char a[8] = {0,1,2,3,4,5,6,7};
Pyrex 中的等价物是什么?
数组就是
cdef unsigned char a[8]
但是我怎样才能让它用我的值初始化呢?
【问题讨论】:
标签: python c python-c-extension pyrex
我想在 Pyrex 中定义初始化的 C 数组,例如相当于:
unsigned char a[8] = {0,1,2,3,4,5,6,7};
Pyrex 中的等价物是什么?
数组就是
cdef unsigned char a[8]
但是我怎样才能让它用我的值初始化呢?
【问题讨论】:
标签: python c python-c-extension pyrex
在 Pyrex 的继任者 Cython 中,这个功能是在一年多的时间里添加的,以修复这个 feature request,因此例如以下在 Cython 中的工作:
cdef double a[] = [0.5, 0.3, 0.1, 0.1]
但是,Pyrex 的开发进度要慢得多(这就是为什么 Cython 几年前被开发人员分叉以加快行动速度的原因),所以我怀疑它是否采用了这个功能(尽管你可以尝试,尤其是如果你是使用 Pyrex 的very latest release,0.9.8.6)。
如果 Pyrex 没有提供您想要的功能,我可以建议改用 Cython 吗?大多数 Pyrex 代码应该可以在 Cython 中顺利重新编译,并且您确实可以通过这种方式获得额外的功能。
【讨论】:
cdef double *a = [0.5, 0.3, 0.1, 0.1]