J'essaie de minimiser l'interdépendance des fichiers #include en tant que pratique générale.
Dans xxx.h j'ai :
struct my_struct; // partial decl to satisfy use of my_struct*
void funct(struct my_struct* ms); // uses the partial def
Comment faire une déclinaison partielle similaire avec un struct typedef'd ? J'ai une déclaration actuelle dans un troisième #include qui ressemble à (disons dans yyy.h) :
typedef struct my_data_s {
int ival;
... struct's other components ...
} my_data_t;
Je veux juste un decl représentatif dans xxx.h qui référence le typedef :
typedef struct my_data_s my_data_t; // actual full decl is elsewhere
void funct2(my_data_t* md);
Cette tentative entraîne une erreur de redéfinition du type my_data_t. (Utilisation de gcc 4.4.3 / Ubuntu 10.4) D'autres tentatives de recherche aléatoire (par exemple, ajouter '{}' à typedef) donnent également des erreurs.
Je sais que le compilateur a seulement besoin de savoir que la fonction nécessite un pointeur, donc il semble que cela devrait être possible. Jusqu'à présent, je n'ai rien trouvé qui compile sans erreur ni avertissement.
J'ai regardé les autres questions et réponses, je n'ai pas trouvé ce problème abordé. Il semble qu'il devrait y avoir un moyen bien connu de faire cela( ?!) (Je sais que je peux #include yyy.y dès que je #include xxx.h - j'essaie d'éviter de telles dépendances). Merci.