Wenn ich Re-Deklarationsfehler vermeiden möchte, ohne Include-Guards zu verwenden, ist die Grundregel, dass der Abhängigkeitsbaum so aussehen muss: ein oder mehrere Bäume.Vermeidung von Re-Deklarationsfehlern ohne Include-Guards
Jedes Mal, wenn ein Elternteil auf zwei verschiedene Arten erreicht werden kann, tritt ein Verstoß auf?
zum Beispiel:
declarations.h umfasst string.h
data.h umfasst declarations.h
data.c umfassen data.h
ui.c data.h umfasst und string.h
Dies erzeugt einen Deklarationsfehler, da sowohl ui.c als auch string.h zwei verschiedene Möglichkeiten beinhalten: direkt und über data.h. Daher ist die Struktur kein Baum, da ui.c mehrere Pfade zum selben Elternteil hat.
Gibt es eine Möglichkeit, mehrere Pfade zum gleichen Elternteil zu haben und keinen Re-Deklarationsfehler zu bekommen?
Ich verstehe es nicht. Könnten Sie bitte Ihre Annahmen und Ihre wirkliche Frage deutlicher formulieren? –
Es ist wahrscheinlich * viel * einfacher, einzigartige Wächter aufzuweisen als eindeutige Abhängigkeitsbäume. Was versuchst du wirklich? –
machen das Leben einfach für sich selbst, verwenden Sie IMMER "include guards" auf jede Header-Datei, die Sie schreiben. Es ist einfach, verwenden Sie _h für den Include-Guard. Sehen Sie sich eine System-Header-Datei an: '#ifndef _h #define _h' und am Ende der Datei:' # endif' Diese drei Zeilen sind alles, was zur Header-Datei hinzugefügt werden muss, um ein 'include' zu haben Wache ' –
user3629249