Я пытаюсь использовать cython, чтобы предоставить оболочку для моих утилит C++. Одна такая функция, которую я пытаюсь сделать доступной, - это аксессор, который возвращает перечисление на основе типа файла.Cython __pyx_r может использоваться неинициализированным в этой функции
Вот как я заново определить функцию в 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
Каждый знает, как лучше обойти это? Я попытался найти решения в google, но все, что у меня было, это страницы других людей, сообщающих одно и то же предупреждение __pyx_r. Может быть, есть способ установить значение по умолчанию или убедиться, что он всегда инициализируется внутри cython?
Я подозреваю, что это не проблема. Однако, если у вас есть сомнения, посмотрите на C, чтобы узнать, в каких обстоятельствах он не инициализируется. К сожалению, не зная, что такое 'self.thisptr', для кого-то еще не может быть никакого взгляда. – DavidW