C++ jedesmal anders?!

Moin Mädels und Jungs,

ich hab ein C++ Buch aus dem ich Programme schreiben will um es zu lernen.
Das Buch ist von 1997, von Markt und Technik. Um mir die quälereien mit den Compilern zu erleichtern, benutze ich Linux Knoppix und Mandrake. Im Windows hat es nicht funktioniert mit den entsprechenden Programmen.

So, zurück. Jedenfalls kann anscheinend der Compiler im Linux die Proogramme nicht richtig compilieren. Ich schreib die Programme genau wie im Buch beschrieben und bekomme immer Fehler. In C-Programmierung funktioniert es ohne Fehler.

Zudem habe ich bei suche im Internet festgestellt, das es wohl im C++ mehere Schreibweisen für Befehle gibt?!

Bei mir im Buch steht cout als Bildschirmausgabe. Im Netz habe ich es Schon gesehen (…std::cout…, …iostream.h / iostream auch ohne h) usw.

Ich denke es ist eine Programmiersprache die festgelegt ist. Warum gibt es dann unterschiedliche versionen???

Schöne Ostern…

Sven

Hallo,

ich hab ein C++ Buch aus dem ich Programme schreiben will um
es zu lernen.
Das Buch ist von 1997, von Markt und Technik. Um mir die
quälereien mit den Compilern zu erleichtern, benutze ich Linux
Knoppix und Mandrake. Im Windows hat es nicht funktioniert mit
den entsprechenden Programmen.

„nicht funktioniert“ ist keine Fehlerbeschreibung.

So, zurück. Jedenfalls kann anscheinend der Compiler im Linux
die Proogramme nicht richtig compilieren. Ich schreib die
Programme genau wie im Buch beschrieben und bekomme immer
Fehler. In C-Programmierung funktioniert es ohne Fehler.

Zudem habe ich bei suche im Internet festgestellt, das es wohl
im C++ mehere Schreibweisen für Befehle gibt?!

Bei mir im Buch steht cout als Bildschirmausgabe. Im Netz habe
ich es Schon gesehen (…std::cout…, …iostream.h /
iostream auch ohne h) usw.

Das liegt daran, dass es eine Änderung mit den Include-Dateien gab.
Alt ist

include 
cout
Die neuen Include-Dateien enden nicht mehr auf .h, und packen ihre Funktionen, Klassen und Objekte in eigene namespaces. Du kannst also


    include 
    using namespace std;
    cout
    oder
    
    
        include 
        using namespace std;
        std:cout
        schreiben.
        
        
        
        > Ich denke es ist eine Programmiersprache die festgelegt ist.  
        > Warum gibt es dann unterschiedliche versionen???
        
        
        Weil sich programmiersprachen, wie alles andere auch, weiterentwickeln. Wenn du ein Buch über den Autobau bei VW von vor zehn Jahren liest, kannst du auch nicht erwarten, dass noch jedes Detail heute so praktiziert wird.
        
        Grüße,
        Moritz

Hallo.

Zusätzlich zu dem bereits Gesagten trifft hier ältere Programmierweise auf neuere Software, z.B. den Compiler. Das bedeutet, wenn man das Buch verwenden will, entweder einen älteren Compiler installieren oder neuere Literatur anschaffen. Wie z.B. diese: http://www.highscore.de

mfg M.L.

include
using namespace std;
std:cout

Bin mir jetzt nicht 100%ig sicher, aber wenn du den namespace explizit beim Funktionsaufruf angibst (std:cout), dann solltest du doch auf

using namespace std;

verzichten können, oder irre ich mich da?

lg
JL

Hallo,

include
using namespace std;
std:cout

Bin mir jetzt nicht 100%ig sicher, aber wenn du den namespace
explizit beim Funktionsaufruf angibst (std:cout), dann
solltest du doch auf

using namespace std;

verzichten können, oder irre ich mich da?

Richtig, mein Fehler.

Grüße,
Moritz

Hallo Sven,

Ich denke es ist eine Programmiersprache die festgelegt ist.
Warum gibt es dann unterschiedliche versionen???

Du musst zuerst einmal das Konzept hinter C/C++ verstehen.

Der Compiler selbst, kennt z.B. gar keine Ein/Ausgabefunctionen !
(In anderen Sprachen, z.B. in BASIC ist der Befehl PRINT fest im Interpreter/Compiler hinterlegt.)

C hat nur etwa 30 bis 40 Schlüsselworte und die Operatoren, C++ ist etwas umfangreicher.

Alles was man an Funktionen kennt ist in Bibliotheken abgelegt, welche wiederum selber in C/C++ geschrieben sind, wie z.B. auch printf().
Dadurch kann jeder sein eigenes printf() schreiben ohne den Sourcecode welcher es verwendet verändern zu müssen.

Damit nicht jeder das Rad immer wieder neu erfinden muss, hat man Standard-Bibliotheken definiert. Viele verwechseln aber diese Bibliotheken mit der Sprache selbst, was nicht ganz richtig ist.

Dadurch ist es aber auch möglich, dass sich die Bibliotheken, bzw. die Include-Dateien abändern lassen und somit Inkompatibilitäten zu älteren Sourcen ergeben ohne dass etwas am Compiler selbst verändert wird.

MfG Peter(TOO)