LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009
-
17 janv. 2007 à 23:54
acx01b
Messages postés280Date d'inscriptiondimanche 7 septembre 2003StatutMembreDernière intervention 8 juillet 2014
-
20 janv. 2007 à 21:55
Bonsoir à tous,
Je suis suis en train de coder un petit projet en C pour l'école et je suis face à un problème ... J'ai deux fichiers struct1.h et struct2.h qui ont besoins l'un de l'autre car les structures définies dans ces 2 fichiers ont besoin de l'autre pour exister. Du coup ... Je sais pas du tout comment faire ... J'arrive pas à compiler puisque lors d'un include, l'autre include n'a pas pu être fait et du coup la compilation ne peut se faire puisque le type n'est pas défini ...
Voilà ... Et du coup, je sais pas quoi faire ! Et j'ai beau chercher sur le net, j'ai pas trouvé de solutions. Donc si quelqu'un peu m'aider, ce serait vraiment sympa !
Merci beaucoup !
L.S.
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 18 janv. 2007 à 09:20
Salut,
Mets le code commun dans un troisième header, lui-même inclus par les deux autres. Avec un
#ifdef tata
#define tata
#else
... le code
#endif
pour éviter le double inclusion
acx01b
Messages postés280Date d'inscriptiondimanche 7 septembre 2003StatutMembreDernière intervention 8 juillet 20146 20 janv. 2007 à 21:53
salut
il y a une 2ieme faut de frappe dans struct2.h:
typedef struct sStruct2 *tStruct2;
et pas
typedef struct sStruct2 *tStruct1;
car sinon ce n'est pas une dépendance croisée
en C il faut faire
typedef struct a a;
typedef struct b b;
struct a {
b *p;
};
struct b {
a *p;
};
le typedef permet la dépendance croisée car le typedef c'est un peu comme déclarer la structure avant de la définir, en plus de servir aussi comme une forme de macro
en C++ la déclaration de class et de struct existe:
class a;
class b;
class a {
b *p;
};
class b {
a *p;
};
et ça permet donc de la même façon la dépendance croisée