Anzeige:
Ergebnis 1 bis 15 von 15

Thema: Anfänger c++

  1. #1
    Registrierter Benutzer
    Registriert seit
    09.10.2002
    Ort
    Berlin
    Beiträge
    110

    Anfänger c++

    Hallo

    Ich habe gerade angefangen mich mit c++ zu beschäftigen Dazu habe ich mir vor einigen Jahren ein Buch gekauft "C++ echt einfach". Wollte auch gleich das obligatorische "Hello World" ausprobieren, mit folgender Quelldatei:

    # include <iostream>

    main() {
    cout << "Hallo Klaus\n";
    }

    Nun versuche ich mittels

    g++ -o Hallo Hallo.cpp

    zu kompilieren.

    Funktioniert so nicht.

    Nun habe ich über das Internet erfahren das es einen neuen Standart gibt

    # include <iostream>

    main() {
    std::cout << "Hallo Klaus\n";
    }

    nun funtioniert es.

    Gibt es ein aktuelles Tutorial, damit ich gleich weiterlernen kann?

    MfG
    Klaus

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486

  3. #3
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Hi

    Was heißt "Funktioniert so nicht."? Werde mal konkret. Welche Meldungen hat der g++ ausgespuckt?
    Gibt es ein aktuelles Tutorial, damit ich gleich weiterlernen kann?
    Ich bin zwar ein verfechter von Lehrbüchern, aber wenn du hier im Forum mal nach Tutorials suchst oder wirst du definitiv fündig.

    Cu
    André
    C und C++

  4. #4
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486
    Original geschrieben von Berufspenner

    Was heißt "Funktioniert so nicht."? Werde mal konkret. Welche Meldungen hat der g++ ausgespuckt?
    Wird wohl irgendwas wegen dem fehlenden namespace gewesen sein,den er ja im zweiten Beispiel angegeben hat.

  5. #5
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Original geschrieben von wraith
    Wird wohl irgendwas wegen dem fehlenden namespace gewesen sein,den er ja im zweiten Beispiel angegeben hat.
    Dann wird es aber wohl eher an seinem Compiler gelegen haben.

    Cu
    André
    C und C++

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von Berufspenner
    Dann wird es aber wohl eher an seinem Compiler gelegen haben.
    Wenn der Compiler das erste Beispiel kompiliert hätte, dann würde was an ihm liegen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    09.10.2002
    Ort
    Berlin
    Beiträge
    110
    Hallo

    Folgende Fehlermeldung beim genannten Beispiel

    g++ -o test1 test.cpp
    test.cpp: In function `int main()':
    test.cpp:4: `cout' undeclared (first use this function)
    test.cpp:4: (Each undeclared identifier is reported only once for each function
    it appears in.)

    Ich benutze g++ 3.2.

    MfG
    Klaus

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ja, das ist auch in Ordnung so.

    cout ist kein globles Symbol, sondern im Namensraum std deklariert.
    Wenn man den nicht angibt, gibt es cout aus Sicht des Kompilers nicht.
    Alles andere wäre ein Fehler des Kompilers, bzw. des Headers.

    Häufig benutze Symbole können in der aktuellen Datei auch global bekannt gemacht werden
    Code:
    #include <iostream>
    
    using std::cout;
    
    int main()
    {
        cout << "Hallo" << std::endl;
    
        return 0;
    }
    Das sollte man aber nur in Sourcedateien tun, den Namespaces sind dazu da, Namenskonflikte zu verhindern und ihre Symbole "rauszuholen" sollte also begrenzt bleiben.

    Beim ausprobieren kann es manchmal ganz praktisch sein, den Namensraum ganz zu öffnen

    Code:
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        cout << "Hallo" << std::endl;
    
        return 0;
    }

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  9. #9
    ProLinuxJorge
    Gast

    Namensräume

    Hallo Forum,

    ich kann angesichts dieses angeblichen Anfängerproblem leider nur scharf eine Empfehlung auf Anfängerliteratur geben.

    Bitte lest Werke wie "Goto C++", Verlag Addison-Wesley, "Jetzt lerne ich C++", eines der vielen Online
    z.B. über
    www.cetus-links.de
    oder
    www.coderlinks.de
    zugänglichen Tutorials, um derartige Fragen zu vermeiden.

    Die Deklaration:
    "namespace std;"
    fehlt hier.

    Das Konzept der Namensräume muss einem Anfänger sicher nicht geläufig sein, da es sich erst bei größeren Programmen (Metrik LOC größer als über den Daumen gepeilt 5000 Zeilen, eigenes Ermessen, bitte diskutieren) lohnen sollte.
    Aber bitte berücksichtigt bei dem Für und Wider einer solchen Frage hier im Forum auch die Antwort "Read The Fucking Manual" (RTFM), wie sie schon mal in Foren im USENET zu hören ist. Als Anfänger sollte man lernen und nicht irrationale Fragen stellen, die schon des öfteren, oft zuhauf und übermäßig diskutiert und beantwortet worden sind. Ich beantworte Fragen gerne, aber ich sehe nicht ein, mich mit den von etlichen Fachautoren bestens und vorzüglichst ausgeführten Zusammenhängen zu beschäftigen. Seit bitte ehrlich mit euch selbst und LEST.

    Mit freundlichen Grüßen

    J. Stein

  10. #10
    ProLinuxJorge
    Gast

    Rezensionen und weiteres mehr zu C und C++

    Hallo liebe Forumler,

    als Anhang zu meinem vorigen Posting hier noch ein Verweis auf eine im englischen Sprachraum zentrale Seite zur Diskussion und Rezension von Büchern zu den Sprachen
    C und C++ der "Association of C and C++ Users":

    www.accu.org

    Diese Seite wurde zur Orientierung in der Masse der Werke zu diesen Sprache vom Schöpfer der Sprache C++, Bjarne Stroustrup, empfohlen.

    Ich hoffe, Ihr könnt Euch genügend Informationen zu C++ beschaffen, ohne die Lust am Programmieren zu verlieren.

    Das Buch "C++ Primer" ist z.B. ein Standartwerk zu C++. Aber denkt ja nicht, dass das das einzige ist...
    A. Stepanov schrieb ein Standartwerk zur "Standart Template Library". Dies darf auch nicht vergessen werden an dieser Stelle.

    Nun ist es euch überlassen die Informationen auf der genannten Seite zu durchforsten
    Glaubt mir, die Mühe lohnt sich, denn Programmierer in C++ wird man niemals in wenigen Monaten... Dafür ist sie doch ein wenig schwer. Ihr schafft das!

    Mit freundlichen Grüßen

    J. Stein

  11. #11
    ProLinuxJorge
    Gast

    Namensräume

    Hallo Ando_Skoa,

    ich möchte mich äußern zu dem Konzept der Namensräume.

    Bitte versuche an dieser Stelle nicht, das Konzept der Namensräume darzulegen. Du bräuchtest dafür richtigerweise eine Zeit, damit angemessen rüberkommt, was der Autor der Sprache mit dem Konzept bewirken wollte. Sei einfach ausführlicher, oder lass es ganz sein, ok

    Ich stimme dir zu, dass Konflikte von Bezeichnern durch das Konzept des Namensraumes vermieden werden. Es ist nicht sinnvoll zu behaupten, es sein unsinnig, Bezeichner freizustellen in einem Raum, d.h. sie aus einem Raum "herauszuholen".
    Bitte sieh einmal kurz in das Standartwerk von B. Stroustrup "The C++ Programming Language", um das Konzept des Namensraumes einem potentiellen Anfänger richtig vermitteln zu können und nicht nur, um Zeilen zu füllen, wie du es wohl hier nicht ganz unschuldig tun wolltest. Vorsicht!! Beachte, dass die Sprache C++ sehr gründlich durchdarcht worden ist. Ein Anfänger soll Interesse am ganzen Konzept zeigen und es am besten von Anfang an direkt verstehen können, anstatt "Appettit" mit Kleinigkeiten gemacht zu bekommen! Beherzige dies bitte!

    Ansonsten wird ein Anfänger sich nur schmerzlich mit neuen wieder verdrehten Fakten anfreunden müssen und das willst du ihm doch nicht antun, oder?

    Mit freundlichen Grüßen

    J. Stein

  12. #12
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486

    Re: Namensräume

    @ProLinuxJorge
    B.Stroustrup erklärt namespace in seinem Buch in ~30 Seiten.
    Und da es noch weit kompliziertere Themen gibt (in dieser und anderer Sprachen),kann die Konsequenz deines Postings also nur lauten,Anfänger bei jeder Frage auf RTFM zu verweisen.
    Damit können wir alle Foren und das Usenet dicht machen.

    Ich finde bezeichned ist für deine ganzen Postings,das du nicht einmal Standard korrekt geschrieben hast .
    Vielleicht hättest du die oben beschriebenen Bücher einmal selber lesen sollen.

    Naja,um auch etwas konstruktiv zu posten
    Code:
     Das Konzept der Namensräume muss einem Anfänger sicher nicht geläufig sein,
     da es sich erst bei größeren Programmen
     (Metrik LOC größer als über den Daumen gepeilt 5000 Zeilen, eigenes Ermessen, bitte diskutieren) lohnen sollte.
    Das sehe ich nicht so.
    Namensräume (und wenn es nur unbenannte Namensräume sind) sind in einem Programm jeder Größe sinnvoll.
    In C,wo es das Konzept nicht gibt,gibt es viele Bezeichnerregeln,die ein Programmierer beachten muß,damit sein Programm nicht in 'undefined behavior' versinkt.
    Bsp. sind Bezeichner die mit str beginnen für die Implementierung reserviert.
    Wahrscheinlich hast du noch nie erlebt wie der falsche (bzw. nicht Einsatz) von Namensbereichen,ein ~100 LOC Programm zum scheitern gebracht hat.
    Namenskonflikte können immer auftreten,ob das Programm nun 5 oder 5000 Zeilen hat.

  13. #13
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    ausserdem finde ich es durchaus legitim, wenn man sich, wenn ein beispiel aus einem Buch nicht funktioniert (kommt häufiger vor als man denkt), mal an das Forum wendet.

    Schliesslich lernt man ja noch C++ und kann folglich (da in dem Buch nix stand) auch nichts über das Konzept bzw. den Fehler in dem Listing wissen.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  14. #14
    Registrierter Benutzer Avatar von buchwaldj
    Registriert seit
    02.08.2003
    Ort
    Leipzig
    Beiträge
    18
    manchmal hilft auch in der ersten Zeile:
    #include <iostream.h> statt <iostream>

  15. #15
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    oder man bleibt direkt bei GCC 2.9.x

    im ernst:
    #include <iostream.h> statt <iostream>
    sollte man nicht machen, denn iostream.h ist deprecated und wird
    irgendwann nicht mehr da sein...

    gruss
    Arthur
    ---------
    irc.mrunix.de #mrunix

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •