Rekursiver Aufruf von Dateien



  • Hallo erstmal.

    Ich hab eine (für mich) recht knifflige Frage. Ich habe einen Parser geschrieben, der eine Datei öffnet und verschiedene Dinge dann in eine Datenbank schreibt.

    Jetzt ist es so, das IMMER wenn mein Parser ein #include findet, diese Datei öffnen soll und darin weitere #includes öffnet, bis es keine neuen mehr gibt.
    Ich weiß nich ob das verständlich war ^^

    Ich versuche mal ein Beispiel zu skizzieren

    in der main.cpp steht in Zeile 1 z.B.

    #include "test.h"

    jetzt soll mein Programm die test.h öffnen und in dieser nach weiteren includes suchen.

    In test.h sind z.B.

    #include "a.h"
    #include "b.h"

    Jetzt soll mein Programm eben genau diese includes auch noch öffnen. Das ganze soll so lange weiter gehen, bis es keine neuen Files mehr zu öffnen gibt.

    Hat jemand schonmal sowas gemacht oder kann mir einen Tipp geben?

    Braucht ihr sourcecode von meinem Parser dafür?

    Ich danke euch schonmal für eure Hilfe

    Spearmint



  • Und wo ist jetzt dein Problem? Beim Oeffnen und Lesen der Datei?
    Setz doch genau das was du beschrieben hast im Programm um 😕
    Findet sich ein #include in der Datei ruftsich die Parser-Funktion fuer diese Datei auf, ist darin wieder eins enthalten ruft sie sich erneut auf...etc...pp



  • Spearmint schrieb:

    Hat jemand schonmal sowas gemacht oder kann mir einen Tipp geben?

    Hier kommt der heisse Tipp: Baum 🙂
    Du kannst dir eine Baumstruktur aufbauen.

    Natürlich musst du aufpassen, das du keine Endlosschleife produzierst:
    // a.h
    #include "b.h"
    // b.h
    #include "a.h"

    Muttu also einen Merker spendieren, ob eine *.h - Datei bereits besucht wurde oder nicht besucht worden ist 😉



  • Oder aber frei nach C/C++-Manier mit #define und includeguards arbeiten. So oder so brauchst du eine Symboltabelle, um dir zu merken was du bereits #defined (oder #included) hast.


Anmelden zum Antworten