2016-07-21 7 views
1

私はC++ユーティリティのラッパーを提供するためにcythonを利用しようとしています。私がアクセス可能にしようとしている関数の1つは、ファイルタイプに基づいて列挙型を返すアクセサです。その後、私のreader.pxdファイルで、私はCython __pyx_rはこの関数で初期化されていない場合があります

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() 
を持って

cdef extern from "reader.h" namespace "magic_number": 
    enum mcr_magic_number_t:                    
     MDI = 0                        
     EOT                         
     RV                         
     UNKNOWN 

と:ここ

どうcythonで再定義する機能です

これをコンパイルすると、警告が表示されます

warning: ‘__pyx_r’ may be used uninitialized in this function

誰もがこの問題を回避する最善の方法を知っていますか?私はgoogleで解決策を探してみましたが、同じ__pyx_r警告を報告している他の人のページがありました。おそらく、デフォルト値を設定する方法や、cython内で常に初期化されることを確認する方法がありますか?

+0

私はそれが非問題だと思います。しかし、疑問がある場合は、どのような状況で初期化されていないかを見るためにCを見てください。残念ながら、 'self.thisptr'が何であるか分からずに、他の誰かが一見見ることができません。 – DavidW

答えて

0

は非NULL値をself.thisptrをチェックしてみてください。

if <void*>self.thisptr != NULL: 
    return self.thisptr.magic_number() 
関連する問題