J'ai un léger problème avec mes fichiers d'inclusion et j'ai fait une maquette simplifiée de mon problème. dire que je suis la compilation d'une source qui nécessite un fichier d'en-tête nomméTransférer "Typedefing" une structure
header.h
Ce qui a en elle:
#ifndef HEADER_INCLUDED
#define HEADER_INCLUDED
#include element.h
typedef struct {
Element *list;
} Thing;
#endif
, j'ai un autre fichier d'en-tête définissant cet élément et nécessitant également header.h. J'ai ensuite rencontré un problème car element.h ne peut pas savoir quel est le type de chose; nous n'avons pas atteint cette définition dans header.h car nous devions inclure element.h.
Je pensais que je pourrais peut-être résoudre mon problème pour « typedefing avant » un type de chose à element.h et juste avant le prototype void * func comme
typedef struct thing Thing;
Alors ce juste crée un autre problème et le compilateur se plaint qu'il existe des types contradictoires pour Thing.
Comment sortir de ce bordel?
'typedef struct Elément;' est invalide. Voulez-vous dire «typedef struct Element Element»? Quelle est la plainte du compilateur au sujet de «Thing»? – Potatoswatter
@Potatoswatter en fait il est valide et cela signifie la même chose que 'struct Element; –