我正在尝试利用cython为我的C ++实用程序提供包装器。我试图使其可访问的一个这样的函数是一个基于文件类型返回枚举的访问器。
以下是我在cython中重新定义函数的方法:
cdef extern from "reader.h" namespace "magic_number":
enum mcr_magic_number_t:
MDI = 0
EOT
RV
UNKNOWN
然后在我的reader.pxd
文件中
cpdef mcr_magic_number_t magic_number(self)
然后在我的reader.pyx
文件中
cpdef mcr_magic_number_t magic_number(self):
"""
:return: the magic_number enum
:rtype: mcr_magic_number_t
"""
return self.thisptr.magic_number()
现在,当我去编译时,我收到警告
warning: ‘__pyx_r’ may be used uninitialized in this function
任何人都知道如何最好地解决这个问题?我尝试在谷歌上搜索解决方案,但我得到的是其他人的页面报告相同的__pyx_r警告。也许有办法设置默认值或确保它始终在cython中初始化?
答案 0 :(得分:0)
尝试检查self.thisptr是否为非NULL值:
if <void*>self.thisptr != NULL:
return self.thisptr.magic_number()