Announcement

Collapse
No announcement yet.

#include vs #include

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #include vs #include

    Hallo,

    bei meinem Wechsel von Delphi zu (Visual) C++ bin ich über folgendes gestolpert:

    Früher war z.B.
    <PRE>
    #include <iostream.h>
    </PRE>
    "gut", heute ist
    <PRE>
    #include <iostream>
    using std::cout;
    using std::endl;
    (bzw. using namespace std) "besser"
    </PRE>
    Was hat es mit beiden Gebilden auf sich?

    Viele Grüße Hans-Peter

  • #2
    Kuckst du hier:<br>
    http://www.entwickler-forum.de/webx?128@@.ee8d154
    <br>Ciao, Uli

    Comment


    • #3
      Hallo Uli,

      die Bedeutung von #include, using, namespace... ist mir schon klar. Nur, was ist denn jetzt "richtig(er)" ????

      Offensichtlich kann ich z.B. auf cout zugreifen, wenn ich iostream<b>.h</b> "include", während ich using std::cout zwingend brauche, wenn ich nur iostream (ohne .h) "include" - bzw. was bedeutet #include <iostream> genau ???? Bei <iostream.h> wird doch vom Präprozessor der Inhalt der Headerdatei in die Quellcodedatei reinkopiert !?

      Viele Grüße H

      Comment


      • #4
        "Richtiger" ist natürlich :-) die neue Version, also ohne ".h".
        <p>
        Das #include macht in beiden Fällen genau das Gleiche -- im Wesentlichen das, was du beschrieben hast.
        Der Unterschied liegt in den <b>Dateien</b> iostream und iostream.h.
        Wenn du dich jeweils rekursiv durch den ganzen Makro-, #include- und #define-Verhau aller beteiligten Headerdateien gewühlt hast und alles gedanklich expandierst, hast du im Endeffekt in beiden Varianten (vermutlich, ich hab's jetzt nicht durchexerziert) das gleiche #include'iert -- nur bei der Variante ohne ".h" steht um das ganze noch <tt>namespace std{...}</tt> außenrum, weswegen du die "importierten" Variablen etc. mit "std::" qualifizieren oder using
        verwenden musst.
        <p>Außerdem gibt's (wieder vermutlich) noch marginale Änderungen wegen Unterschieden Prästandard-C++ <-> Standard-C++.
        <p>Ciao, Uli

        Comment


        • #5
          d.h "ein praktischer Nutzen" - wenn ich das ganze nur in "meinen Adressraum" sehe, sprich "es gibt windows und es gibt vc++ sonst nix" - ist nicht Sinn und Zweck der Übung, sondern es ein weiterer Schritt in Richtung Standardisierung und Plattformunabhängigkeit ???

          Viele Grüße H

          Comment


          • #6
            So in etwa. Der Nutzen besteht halt darin, etwaige Namenskollisionen zu vermeiden. Wenn man aber eh -- wie es wohl viele Progrmamierer tun -- reflexmäßig "using namespace std" hinter jedes "#include &lt;iostream&gt;" schreibt, ist das auch hinfällig.
            <br>Ach ja: Wenn dein Adressraum auch zukünftige VC++s enthält, bist du "mit ohne h" wahrscheinlich auch besser dran.
            <br>Ciao, Uli

            Comment

            Working...
            X