【发布时间】:2018-07-20 04:37:25
【问题描述】:
我怀疑这是一个简单的问题,但我似乎无法为观察到的行为找到任何解释。假设我在由以下定义的 C 头文件中有一个常量:
#define FOOBAR 128
typedef uint32_t mytype_t;
我在 Cython 中通过将以下内容放入 .pxd 文件中进行转换:
cdef int _FOOBAR "FOOBAR"
ctypedef uint32_t mytype_t
在我的 .pyx 文件中,我有一个声明:
FOOBAR = _FOOBAR
随后在类定义中:
cdef class MyClass:
cdef mytype_t myvar
def __init__(self):
try:
self.myvar = FOOBAR
print("GOOD")
except:
print("BAD")
然后我尝试用一个简单的程序来执行这个:
try:
foo = MyClass()
except:
print("FAILED TO CREATE CLASS")
遗憾的是,这个错误出来了,但我没有收到错误消息 - 我只是得到了异常打印输出:
BAD
任何有关根本原因的建议将不胜感激。
【问题讨论】:
-
我很抱歉 - 为了简化问题,我显然遗漏了一些关键信息。当变量不是整数而是定义的固定类型时,就会出现问题。我已经更新了问题。
-
请提供minimal reproducible example。您可以使用 Cython 的逐字代码 (cython.readthedocs.io/en/latest/src/userguide/…) 使其独立。