我想在我的.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中。
如果存在更多差异,则可以以相同的方式进行操作,并以此为例。