2009-09-03 10 views
2

Pyrexを使用してPythonでCコードをラップしようとしています。私は2つの構造体を定義することに問題を抱えてきました。この場合、構造は互いに定義されており、Pyrexはこの競合を処理できないようです。構造は次のようになります。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は、関数定義を含む別個のファイルですが、それはこれらの構造を定義するソースファイルが含まれています。私は構造をラップするために使用していたコードは次のようになります。私はこれらの構造の両方をラップすることができる方法はありますか?

答えて

3

あなたはincomplete type(あなたは、対応するCが.hファイルだけでなく、.cファイルにあるように中のtypedef必要です)を使用することができます:

cdef extern from "some.h": 
    ctypedef struct b 
    ctypedef struct a: 
    b * b_pointer 
    ctypedef struct b: 
    a a_obj 
関連する問題