Ich versuche, Cython zu verwenden, um einen Wrapper für meine C++ - Dienstprogramme bereitzustellen. Eine dieser Funktionen, auf die ich zugreifen möchte, ist ein Accessor, der eine Enumeration basierend auf dem Dateityp zurückgibt.Cython __pyx_r kann in dieser Funktion nicht initialisiert werden
Hier ist, wie ich die Funktion in cython neu zu definieren:
cdef extern from "reader.h" namespace "magic_number":
enum mcr_magic_number_t:
MDI = 0
EOT
RV
UNKNOWN
und dann in meiner reader.pxd
Datei Ich habe
cpdef mcr_magic_number_t magic_number(self)
und dann in meiner reader.pyx
Datei Ich habe
cpdef mcr_magic_number_t magic_number(self):
"""
:return: the magic_number enum
:rtype: mcr_magic_number_t
"""
return self.thisptr.magic_number()
Jetzt, wenn ich gehe, um dies zu kompilieren, bekomme ich eine Warnung
warning: ‘__pyx_r’ may be used uninitialized in this function
Wer weiß, wie man am besten ist, dies zu umgehen? Ich habe versucht, nach Lösungen auf Google zu suchen, aber alles, was ich bekam, waren Seiten anderer Leute, die die gleiche __pyx_r Warnung melden. Vielleicht gibt es eine Möglichkeit, einen Standardwert festzulegen oder sicherzustellen, dass er immer in Cython initialisiert wird.
Ich vermute, es ist kein Thema. Wenn Sie jedoch im Zweifelsfall auf das C schauen, um zu sehen, unter welchen Umständen es nicht initialisiert wird. Leider ist es nicht möglich, dass sich jemand anders umsehen kann, ohne zu wissen, was "self.thisptr" ist. – DavidW