C++ Header ohne Endung



  • Hallo Leute,

    wie bekannt sein dürfte werden in der C++ Std.-Library Headerdateien ohne Endung (.h, .hpp, .hxx ...) benutzt.

    Ich hab das dann einfach mal aus Langeweile und um zu gucken ob das überhaupt möglich ist nachgemacht und selbst einen solchen Header erstellt und ohne Probleme kompiliert :p

    Macht es irgendeinen Unterschied, wenn man solche Header schreibt/benutzt und wieso tut das keiner?? 😕


  • Mod

    Konvention.

    Du kannst deine Header auch gerne *.jfvbnvh578hg5unf nennen. Ein Include sucht einfach nur die Datei im Suchpfad und fügt sie ein, ganz egal wie der Name ist.



  • Achso. Also sind die Endungen nur vereinheitlichte Dekorationen :p

    Verhält sich das mit den .cpp-Dateien genauso?



  • Der Preprozessor macht bei #include ja einfach nur eine Textersetzung. Bei Codedateien ist es nicht ganz egal, da die meisten Compiler die Endungen benutzen, um die richtige Sprache zu finden (also .c für C und .c++,.cpp etc. für C++).



  • Alles klar.. Das ist gut zu wissen.

    Danke für die schnellen Antworten 🙂



  • NEO.PIXEL schrieb:

    wie bekannt sein dürfte werden in der C++ Std.-Library Headerdateien ohne Endung (.h, .hpp, .hxx ...) benutzt.

    Das ist nicht ganz richtig. Es stimmt zwar, dass man beim Include Namen ohne Endung angibt, und es stimmt auch, dass eine naheliegende Realisierung in Dateinamen ohne Endung besteht, aber prinzipiell sind die Standard-Header keine Dateien in dem Sinne. Der Compiler darf die Namen zum Beispiel auf andere Dateinamen abbilden. Der Sinn der Sache ist, nicht von der Sprache her schon das Prinzip der Dateinamen vorzugeben. Vielleicht hat man ja ein System, indem Dateiendungen nicht mit Punkt abgetrennt werden. Oder das nur 8 Zeichen im Dateinamen zulässt ("algorithm" sind z.B. schon 9).

    Macht es irgendeinen Unterschied, wenn man solche Header schreibt/benutzt und wieso tut das keiner?? 😕

    Dateinamen ohne Erweiterung sind oft unpraktisch.



  • NEO.PIXEL schrieb:

    wieso tut das keiner?? 😕

    Weil Windows nicht fähig ist Dateien nach Inhalt verknüpften Programmen zuzuordnen.
    rya.



  • NEO.PIXEL schrieb:

    Verhält sich das mit den .cpp-Dateien genauso?

    C++ Sourcedateien werden üblicherweise über eine Dateiendung durch den Compiler erkannt. Aber auch das kann man bei vielen Compilern durch Compilerflags übergehen. Übliche Endungen für C++ Sourcecode sind: .C .cxx .cc .cpp
    .cpp ist früher auf UNIX Systemen überhaupt nicht üblich gewesen, da cpp der eigenständige C-Präprozessor ist, mit .C hat man auf Windowssystemen dann seine Freude.



  • Ok.. Genau das wollte ich wissen 🙂

    Also kann man zusammengefasst sagen, dass die Endung bei einem Header Geschmackssache und die einer Sourcedatei compilerabhängig ist.

    Nochmal danke für die Antworten.


Anmelden zum Antworten