我正试图用pyrex在python中包装一些C代码。我在定义两个结构时遇到了一个问题。在这种情况下,结构是按照彼此的术语定义的,而Pyrex似乎无法处理冲突。结构看起来是这样的:
typedef struct a { b * b_pointer; } a; typedef struct b { a a_obj; } b;
它们被放在不同的文件中。我用来包装结构的代码如下所示:
def extern from "file.c": ctypdef struct a: b * b_pointer ctypedef struct b: a a_obj
File.c 是包含函数定义的独立文件,与结构定义不同,但它包含定义这些结构的源文件。有什么方法可以把这两个结构都包起来吗?
File.c
你可以使用 incomplete type (您确实需要中的相应c typedef位于 .h 文件,不仅仅是 .c 文件):
.h
.c
cdef extern from "some.h": ctypedef struct b ctypedef struct a: b * b_pointer ctypedef struct b: a a_obj