Includes in Header File



  • Hallo Leute,

    ich habe ein grundsätzliche Frage zu Header-Dateien.

    Müssen diese die includes beinhalten, wenn sie doch selbst included werden und die Includes schon in der cpp datei sind, wo auch die header datei included wird?

    Angenommen ich habe eine A.h mit einer Funktion, die mit std::cout ein Ausgabe macht.

    also A.cpp beinhaltet <iostream> und "A.h"
    Muss A.h auch <iostream> includen, wenn sie intern bzw. die alleinstehend bräuchte, wenn sie nach der iostream in die cpp eingefügt wird?

    Da meine A.cpp schon die passende Include Datei enthält, müsste das Programm doch auch laufen, ohne dass die Header Datei die selbe Include Datei enthält.
    Ich dachte include bedeutet, dass nur der Code aus der H-Datei in die cpp reinkopiert wird.
    Hoffe konnte mich verständlich ausdrücken.
    Gruß
    pluxyy



  • Wenn das Programm übersetzt wird, hat der Compiler alles benötigte gefunden.

    Interessant wird es in größeren Projekten, wenn man darauf warten muss, dass der Compiler endlich fertig wird. Deshalb die Regel: im Header wird das eingebunden, was dort direkt benötigt wird, d.h. für Pointer und Referenzen lässt man das include weg und benutzt eine Vorwärtsdeklaration. Das include kommt dann in die cpp, die es benötigen.



  • Beachte auch, dass die Anweisung #include<iostream> lediglich den inhalt der datei 'iostream' im standard-include-pfad an dessen Stelle kopiert. Im Gegensatz zu Sprachen wie java oder python ist das modulkonzept in C und C++ sehr einfach.


Log in to reply