2009-09-03 11 views
2

Je tente d'envelopper du code C en Python en utilisant Pyrex. J'ai rencontré un problème avec la définition de deux structures. Dans ce cas, les structures ont été définies les unes par rapport aux autres, et Pyrex n'arrive pas à gérer le conflit. Les structures ressemblent à quelque chose comme ça:Envelopper les structures mutuellement dépendantes dans Pyrex

typedef struct a { 
    b * b_pointer; 
} a; 

typedef struct b { 
    a a_obj; 
} b; 

Ils sont placés dans des fichiers différents. Le code que je utilise pour envelopper les structures ressemble à ceci:

def extern from "file.c": 
    ctypdef struct a: 
      b * b_pointer 
    ctypedef struct b: 
      a a_obj 

File.c est un fichier séparé contenant des définitions de fonction, par opposition aux définitions de la structure, mais il inclut les fichiers sources qui définissent ces structures. Y a-t-il un moyen d'envelopper ces deux structures?

Répondre

3

Vous pouvez utiliser un incomplete type (vous avez besoin du correspondant C typedefs pour être dans un fichier .h, pas seulement un fichier .c):

cdef extern from "some.h": 
    ctypedef struct b 
    ctypedef struct a: 
    b * b_pointer 
    ctypedef struct b: 
    a a_obj