Cython是否可以翻译C头Cython指令? (参见条件编译中的here)。 类似的建议也是here。
在我的情况下,我想在我的.h中使用这些C指令:
/* myheader.h */
#define MONIT_STEP 1 // stuff for step monit
//#define MONIT_SCATTERING 1 // monitor particle scattering
#define clight (3.0*1e10)
//#define NORM(x,y,z) (sqrt(x*x+y*y+z*z)) // maybe this is too much to ask?
将被翻译为:
# cython_header.pyx
DEF MONIT_STEP = 1
DEF clight = (3.0*1e10)
以后我可以这样做:
include "cython_header.pyx"
在我要编译的任何其他.pyx
代码中。
当然,我暗示在任何" //"之后都无法忽略任何角色。 myheader.h
中的字符串。
我离开了NORM(x,y,z)
评论,因为我没有看到它实现起来很简单,因为它的功能"性质(即它不仅仅是复制粘贴)。
我以为我可以用这个捕获C预处理器(参见Cython docs,"引用C头文件"):
cdef extern from "spam.h":
pass
但不起作用。
当然,我总是可以使用this方法,但我希望我们能够更加一致。