Welche Endung (.h oder ohne) für C++-Standard-Header?



  • Oops, da scheint sich ja was gewaltig geändert zu haben in C++.

    Anscheinend haben die Standard-Header-Files jetzt keine Endung (.h bzw. .hpp) mehr, sondern werden ohne Endung importiert (also z. B. include <iostream> statt include <iostream.h>.

    Meine Frage ist jetzt, ob das auch die aktuellen UNIX-Compiler unterstützen, oder ob man da noch mit ".h" includen muss?

    Mir ist das zuerst bei Visual Studio aufgefallen. Da hat ein einfaches "Hello, world!" nicht mehr funktioniert.

    Schon bei:

    #include <iostream.h>

    gibt es Fehler (nicht gefunden).

    stattdessen:

    #include <iostream>

    geht, aber:

    cout << "Hello, world!" << endl;

    funktioniert nicht mehr. Man muss entweder:

    using namespace std; // davor schreiben

    oder:

    std::cout << "Hello, world!" << std::endl;

    schreiben.

    Ist das beim GCC mittlerweile auch so, oder muss ich nach wie vor meine Header Files in der Art:

    #ifdef _MSCVER
    #include <iostream>
    using namespace std;
    #else
    #include <iostream.h>
    #endif

    schreiben?



  • Das ist sogar schon seit mindestens 14 Jahren so, dass die C++-Header keine Endung haben und die C-Header statt foo.h eben cfoo heißen.

    Kurzum: Sowohl MSVC als auch GCC unterstützen das.
    Deine extrem veraltete *.h Schreibweise funktioniert bestenfalls aus Kompatibilitätsgründen noch.
    (z.B. weil GCC und MSVC neben einem C++ Compiler auch noch einen C Compiler enthalten...)

    Den namespace std gibt es mindestens genau so lange.



  • Kommst du aus der Steinzeit?



  • Finde ich ja Klasse, dass ich so schnell Antworten bekomme 🙂

    Und ja, ich komme noch aus der Steinzeit (Stroustrup 2. Auflage, das war die erste in Deutsch mit Druckfehlern ohne Ende).

    Sorry - ich hoffe Ihr helft mir trotzdem 😉



  • p.s.: Und vielen Dank, habe ich heute wieder was gelernt.

    BTW: Vor 14 Jahren war es definitiv noch kein Standard, dass Header ohne .h eingebunden wurden. MS VC war da definitiv einer der ersten (die waren davor immer die, die am weitesten zurück lagen, gegenüber z. B. IBMs VisualAge oder GCC). Und das hat damals auch viele Programmierer verwirrt, dass ein einfaches "Hello, World!" nicht mehr funktionierte (ohne "using namespace std;").



  • Man includiert ja nicht die Header <foo.h>, damit man direkt danach ein "using namespace std;" haut 🙄



  • johan schrieb:

    p.s.: Und vielen Dank, habe ich heute wieder was gelernt.

    BTW: Vor 14 Jahren war es definitiv noch kein Standard, dass Header ohne .h

    Der Standard, der von der ISO verabschiedet wurde und in dem festgelegt wurde, dass die Header der Standardbibliothek Name ohne .h haben, ist 1998 verabschiedet worden. Dass einzelne Hersteller nicht sofort standardkonform waren sondern ihre Compiler noch mit Bilbiotheken ausgeliefert haben, die diese Nomenklatur nicht umsetzten, ist was anderes.
    Gleiches gilt auch für den namespace std, der ist ebenso mit diesem Standard definiert worden.

    Wenn du (bzw. dein C++-Wissen) noch aus der prä-Standard-Zeit stammst, darf dir hier dringend nahegelegt werden, dir auch ein aktuelles C++-Buch zuzulegen. Neben den Headern hat sich seitdem nämlich auch das allgemeine Verständnis der Sprache extrem weiterentwickelt, dadurch ist der Stil deutlich unterschiedlich zum alten "C mit Klassen", und zu guter letzt gibt es mannigfaltige Biblitoheken und einen nagelneuen Standard, die das Programmieren mit C++ auf eine völlig andere Ebene heben - ungefähr so unterschiedlich wie Prästandard-C++ und Assembler 😉



  • Ich habe in den letzten Tagen damit begonnen mir c++ zu lernen und hab mir dazu einige von den Tutorials unter
    http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=viewsdownload&sid=2
    angeschaut. Jetzt ist mir aufgefallen, dass die ebenfalls veraltet sind und dort, wie ich diesem Beitrag hier entnehme, wenigstens zum Teil Vorstandardwissen vermittelt wird.
    Daher sollte man diese Seite vielleicht einmal aktualisieren und ausmisten.

    Außerdem wüsste ich gerne welche Tutorials ich stattdessen benutzen kann, bzw. ob es hier im Forum noch eine andere, aktuellere Zusammenstellung gibt.
    mfg qubic



  • qubic schrieb:

    einige von den Tutorials [...] aufgefallen, dass die ebenfalls veraltet sind

    Welche von denen?



  • Das Dritte: c++- Eine Einführug
    Auch wenn es sonst recht gut war.

    Außerdem das vierte: Einführung in c++


Anmelden zum Antworten