Cython __pyx_r 可能在此函数中未初始化使用
Posted
技术标签:
【中文标题】Cython __pyx_r 可能在此函数中未初始化使用【英文标题】:Cython __pyx_r may be used uninitialized in this function 【发布时间】:2016-07-21 15:03:52 【问题描述】:我正在尝试利用 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 中初始化?
【问题讨论】:
我怀疑这不是问题。但是,如果有疑问,请查看 C 以了解它未初始化的情况。不幸的是,不知道self.thisptr
是什么,其他人实际上不可能查看。
【参考方案1】:
尝试检查 self.thisptr 的非 NULL 值:
if <void*>self.thisptr != NULL:
return self.thisptr.magic_number()
【讨论】:
以上是关于Cython __pyx_r 可能在此函数中未初始化使用的主要内容,如果未能解决你的问题,请参考以下文章