2

我正在尝试使用 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是一个包含函数定义的单独文件,与结构定义相反,但它包含定义这些结构的源文件。有什么方法可以包装这两种结构吗?

4

1 回答 1

3

您可以使用不完整的类型(您确实需要相应的 C 类型定义在.h文件中,而不仅仅是.c文件中):

cdef extern from "some.h":
  ctypedef struct b
  ctypedef struct a:
    b * b_pointer
  ctypedef struct b:
    a a_obj
于 2009-09-03T22:28:19.910 回答