可以在此函数中使用未初始化的Cython __pyx_r

时间:2016-07-21 15:03:53

标签: python c++ cython

我正在尝试利用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中初始化?

1 个答案:

答案 0 :(得分:0)

尝试检查self.thisptr是否为非NULL值:

if <void*>self.thisptr != NULL:
    return self.thisptr.magic_number()