Frage bez. Header/Source Dateien



  • Hallo,
    normalerweise schreibt man ja in die Headerdateien Klassendefinitionen und Funktionskopfe rein. Die Implementierung steht dann in den .cpp oder .c dateien.

    Ich hab vor kurzem bei jemandem gesehn, dass der beides in die Headerdatei schreibt. Also zuerst oben die Definition und dann darunter die Implementierung.

    Als Argument dafuer hat er gesagt, dass er dann nicht soviele Dateien herumkopieren muss und dass es kompakter ist.

    Jetzt meine Frage:
    Was sind denn die Argumente fuer getrennte Dateien?
    Mir faellt nur ein, dass es dann schneller kompiliert wird (beim ersten Kompilieren werden ja Objektdateien erstellt und dann nur noch gelinkt).

    Was waeren denn andere Vorteile?
    Ich meine, wenn das das Einzige waere, dann sollte es doch kein Problem sein, Kompiler zu entwickeln, die das automatisch trennen?

    Sorry wenn die Frage ein bischen dumm ist..

    Grueße..
    aMan..



  • Geht das Kompilieren wirklich schneller? Denk mal darüber nach! Es ist doch eher so, das das Kompilieren länger dauert, wenn man ein größeres Projekt hat.

    Warum? Wenn du alles in Headern drin hast, werden diese bei jedem Build neu kompiliert, auch wenn man sie nicht editiert hat. Wenn du die Implementierungen in den cpps drin hast, werden die Implementierungen nur dann kompiliert, wenn du sie auch seit dem letzten Build editiert hast.

    Außerdem sehe ich einen weiteren Nachteil: wenn ich an meiner Implementierung arbeite, will ich zwischendurch nur die eine Implemntierung (x.cpp) auf Syntaxfehler testen: ich kann meinen Compiler veranlassen nur diese eine cpp-Datei zu kompilieren. Habe ich alles in Headern, muß ich immer das ganze Projekt builden, um auf Syntaxfehler zu prüfen. Und das dauert nunmal länger als eine einzelne cpp zu kompilieren.

    Weiterhin dürfte es sicherlich Probleme bei Crossreferenzierungen geben, wenn man gegenseitig auf Methoden von Klassen in zwei verschiedenen Headern zugreifen will. Kann mir bei cpp-Dateien nicht passieren.



  • Artchi schrieb:

    Geht das Kompilieren wirklich schneller? Denk mal darüber nach! Es ist doch eher so, das das Kompilieren länger dauert, wenn man ein größeres Projekt hat.

    Warum? Wenn du alles in Headern drin hast, werden diese bei jedem Build neu kompiliert, auch wenn man sie nicht editiert hat. Wenn du die Implementierungen in den cpps drin hast, werden die Implementierungen nur dann kompiliert, wenn du sie auch seit dem letzten Build editiert hast.

    Hast du meinen Beitrag komplett gelesen? Genau das Gleiche hab ich ja auch gesagt. Oder meinst du was anderes?

    Außerdem sehe ich einen weiteren Nachteil: wenn ich an meiner Implementierung arbeite, will ich zwischendurch nur die eine Implemntierung (x.cpp) auf Syntaxfehler testen: ich kann meinen Compiler veranlassen nur diese eine cpp-Datei zu kompilieren. Habe ich alles in Headern, muß ich immer das ganze Projekt builden, um auf Syntaxfehler zu prüfen. Und das dauert nunmal länger als eine einzelne cpp zu kompilieren.

    Weiterhin dürfte es sicherlich Probleme bei Crossreferenzierungen geben, wenn man gegenseitig auf Methoden von Klassen in zwei verschiedenen Headern zugreifen will. Kann mir bei cpp-Dateien nicht passieren.

    Thx fuer die Info..

    Grueße..
    aMan..



  • Sorry! Der letzte Satz hat den vorherigen Absatz neutralisiert:

    Was sind denn die Argumente fuer getrennte Dateien?
    Mir faellt nur ein, dass es dann schneller kompiliert wird (beim ersten Kompilieren werden ja Objektdateien erstellt und dann nur noch gelinkt).

    Was waeren denn andere Vorteile?

    Im Prinzip kam mir dein Posting so vor, als ob du die Only-Header-Lösung für Vorteilhaft empfindest.


Anmelden zum Antworten