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