我想在我的.h文件中声明的.pyx C类型中使用:

//decls.h
typedef double Doub
typedef long int LInt
//etc...


我的轻松解决方法是在* .pxd中重新声明它们(即,将typedef的那个块复制粘贴到我的.h中,以替换.pxd-> typedef)。
现在,我正在使用带有许多ctypedef语句的另一个.h,因此我想使用一种更“ cythonic”的声明方式。
我一直在阅读this,但并没有帮助我。
也许是这样的:

# .pxd cython file
cdef extern from "decls.h":
    Doub # no idea what to put before `Doub`

最佳答案

如果唯一的区别是c中的typedef,则可以使用C预处理器将.h文件预处理为可由cython处理的文件。例如:

// a .c file:
#define CTYPEDEF typedef
#include "mytypes.h"

// the "mytypes.h" for cython preprocessing
#ifndef CTYPEDEF
# define CTYPEDEF ctypedef
#endif
CTYPEDEF ... myType;


在您的makefile或IDE中,制定一条规则以预处理.h文件,然后将输出包括到cython中。

如果存在更多差异,则可以以相同的方式进行操作,并以此为例。

08-16 20:09