【问题标题】:How to define initialized C-array in the Pyrex?如何在 Pyrex 中定义初始化的 C 数组?
【发布时间】: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


    【解决方案1】:

    在 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 中顺利重新编译,并且您确实可以通过这种方式获得额外的功能。

    【讨论】:

    • 感谢 Alex,但我不能使用 Cython,因为它只支持 gcc,至少在我上次检查时是这样。我也需要与 MSVC 兼容。
    • @bialix,最近的修复应该允许 Cython 解决 msvc 的限制,尽管不是所有的都进入了 0.12.1——如果你使用 mercurial 来获取hg.cython.org/cython-devel,你可以检查它是否适用于/ msvc 的特定版本(否则会打开一个错误)。顺便说一句,它在 w/mingw32 下工作得很好,它与 msvc 链接兼容,因此是标准 CPython windows 版本。
    • 语法已更改为cdef double *a = [0.5, 0.3, 0.1, 0.1]
    猜你喜欢
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2010-11-25
    • 2011-01-11
    • 2019-09-29
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多