Proba asi:

struct B;

struct A {
  struct B *partner;
};

struct B {
  struct A *partner;
};

2008/3/19 Carlos Pantelides <[EMAIL PROTECTED]>:
> Gonzalo Merayo:
>
>
>  >    Tendras que hacer un ifndef distinto para cada
>  > archivo. De esa
>  > forma se rompe la dependencia ciclica.
>
>
>  Muchas gracias por tu respuesta, pero, parece que he
>  formulado mal mi pregunta. Los #ifndef los quité del
>  ejemplo que envié para concentrar en el problema.
>
>  Mi problema es que no sé como romper la dependencia
>  cíclica de las definiciones.
>
>
>  Según un ejemplo sacado de "Pointers in C" de Reek
>  (10.1.6 Incomplete Declarations):
>
>  struct B;
>
>  struct A {
>    struct B *partner;
>  };
>
>  struct B {
>    struct A *partner;
>  };
>
>
>  Aplicando el ejemplo del libro, llegué a "mas luego"
>  que segun lo que comprendo debería compilar sin
>  inconvenientes. Y asi lo hace hoy!!! tras un make
>  clean.
>
>  Aun asi hay algo que no entiendo: la linea marcada con
>  /* ### */ no hace diferencia a la hora de compilar y
>  en mi comprensión si hace diferencia.
>
>
>
>
>  Carlos Pantelides
>  ####################### antes #######################
>  [main.h]
>  #include "cache.h"
>   typedef struct {
>   Cache * cache;
>  } t_api;
>
>  ----------------------------------------------------
>  [cache.h]
>   typedef struct {
>   void  (*inner_read)() ;
>   } Cache;
>
>  ####################### luego #######################
>  [main.h]
>  typedef struct {
>   ...
>  } t_rec;
>  #include "cache.h"
>   typedef struct {
>   Cache * cache;
>  } t_api;
>
>
>  -----------------------------------------------------
>  [cache.h]
>  typedef struct {
>   int   cache_size;
>   void  (*inner_read)(t_api *, t_rec *) ;
>  } Cache;
>
>  ##################### mas luego #####################
>  [main.h]
>  typedef struct {
>    ...
>  } t_rec;
>
>  struct t_api; /* ### */
>
>  #include "cache.h"
>
>  struct t_api{
>    FILE * imp_file;
>    Cache * cache;
>  };
>  -----------------------------------------------------
>  [cache.h]
>  typedef struct {
>   int   cache_size;
>   void  (*inner_read)(t_api *, t_rec *) ;
>  } Cache;
>
>
>
>
>       
> ____________________________________________________________________________________
>  Looking for last minute shopping deals?
>  Find them fast with Yahoo! Search.  
> http://tools.search.yahoo.com/newsearch/category.php?category=shopping
>  _______________________________________________
>  Lista de correo Programacion.
>  [email protected]
>  http://listas.fi.uba.ar/mailman/listinfo/programacion
>

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a