Warum Header auch in einer zugehörigen Implementationsdatei inkludieren???



  • Lerne gerade C++ (nach Pascal u. Java) und setzte mich hier gerade mit der
    Programmstrukturierung auseinander.Kann es sein dass die Inkludierung des Headers in der zugehörigen Implementationsdatei nur der Typüberprüfung der Funktiondefinitionen dienlich ist , wenn nicht wenigstens irgend ein Typ oder was Anderes aus dem Header zur Implementierung herangzogen wird?
    Das Inkludieren des Headers in diesem Fall ist ja eh optional..oder?. Was ich vorallem nicht verstehe ist Folgendes: Habe einen Header nur mit Funtionsprototypen Nach meiner Annahme wäre dann eine Inkludierung in die implemetierende Datei selbst nur dazu gut , die dort definierten Funktionen,welche den gleichen Namen wie die Prototypen tragen auf eine identische Signatur zu überprüfen , um typsicherheit sicherzustellen. Wenn ich die Implementationsdatei aber compiliere meckert der Compiler nur wenn der Ergebnistyp von dem der Prototypdeklaration abweicht , aber nicht wenn die Parameter abweichen. Damit wird ja dann doch nicht komplett auf Typsicherheit überprüft,was hier so gut ist als würde dies gar nicht stattfinden ,also
    könnt ich den Header auch gleich draussen lassen....oder???Warum wird nicht die komplette Signatur auf Übereinstimmung überprüft??? compilerspezifisch???
    Lerne mit der Dev-C++-IDE und dem GNU-Compiler (g++ glaub ich).
    Vielleicht hab ich ja so manches falsch verstanden bisher, komm hier jedenfalls echt nicht weiter mit meiner Logik......... 😕
    Jedenfalls schon mal Danke für eure Hilfe und eure Zeit......



  • JohnnyDoe schrieb:

    Kann es sein dass die Inkludierung des Headers in der zugehörigen Implementationsdatei nur der Typüberprüfung der Funktiondefinitionen dienlich ist

    ja, du hast er erkannt.

    Warum wird nicht die komplette Signatur auf Übereinstimmung überprüft???

    int foo(int) und int foo(double) sind zwei verschieden zur parallelexistenz berechtigte funktionen.

    in C++ mit klassen wird es nicht mehr reichen, den header nicht zu inkludieren, weil die klassendefinition im header stehen wird.


Anmelden zum Antworten