Cython: ¿Existen diferencias entre `cdef public: void f()` y `cdef public: cdef void f()`?
Una función en un archivo .pxd puede ser definida de la siguiente manera:
cdef public:
void f()
O de esta manera:
cdef public:
cdef void f()
En ambos casos se compilan sin errores. Me pregunto cuál es la diferencia entre estos dos y cuál es la función C real.
davy.ai
La primera definición:
define una función C pública llamada
f()
que no recibe argumentos y no devuelve ningún valor.La segunda definición:
también define una función C pública llamada
f()
que no recibe argumentos y no devuelve ningún valor. Sin embargo, también incluye la palabra clavecdef
, lo que significa que la función está definida en Cython y puede utilizar sintaxis específica de Cython que no es código válido en C.Ambas definiciones se compilarán sin errores, pero la segunda definición contiene información adicional sobre la implementación de la función en Cython. Por lo tanto, la primera definición es la función C “real”, ya que no contiene ningún código específico de Cython.