Si je veux éviter les erreurs de redéclaration sans utiliser les protections incluses, la règle de base est que l'arbre des dépendances doit être: un ou plusieurs arbres seulement.Éviter les erreurs de redéclaration sans inclure les protections
Chaque fois qu'un parent peut être atteint de deux manières différentes, alors une violation se produit?
par exemple:
declarations.h comprend string.h
data.h comprend declarations.h
donnees.c comprennent data.h
ui.c comprend data.h et string.h
Ceci génère une erreur de redéclaration car à la fois ui.c et inclut string.h de deux manières différentes: directement et via data.h. Ainsi, la structure n'est pas un arbre, car ui.c a plusieurs chemins vers le même parent.
Existe-t-il un moyen d'avoir plusieurs chemins vers le même parent sans obtenir une erreur de redéclaration?
Je ne comprends pas. Pourriez-vous énoncer vos hypothèses et votre vraie question plus clairement, s'il vous plaît? –
Il est probablement * beaucoup * plus facile de trouver des gardes d'inclusion uniques que des arbres de dépendances uniques. Qu'est-ce que vous * essayez * vraiment de faire? –
rendre la vie facile sur vous-même, TOUJOURS utiliser 'include guards' sur chaque fichier d'en-tête que vous écrivez. C'est facile, utilisez _h pour la garde d'inclusion. regardez n'importe quel fichier d'en-tête système pour: '#ifndef _h #define _h' et à la fin du fichier:' # endif' Ces trois lignes sont tout ce qui doit être ajouté au fichier d'en-tête pour avoir un 'include garde ' –
user3629249