1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

C++ Start Schwierigkeiten

Discussion in 'Programmieren' started by 0John0, Jan 27, 2009.

Thread Status:
Not open for further replies.
  1. 0John0

    0John0 Kbyte

    Da ich im Oktober eine Schule beginne in der auch C++ vorkommt habe ich mich dazu entschlossen damit jetzt schon zu beginnen.

    Ich habe mir ein Einsteiger Buch besorgt.

    Leider stimmen meine Resultate bereits nach der ersten Übung nicht mit dem Buch überrein.


    Man schreibt im Editor das "Hallo Welt" Programm.
    Danach wechselt man in die "Eingabeaufforderung" und versucht von dort aus das Programm auszuführen.
    Leider kommt bei mir nur das:

    Microsoft Windows XP [Version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.

    C:\Dokumente und Einstellungen\Re>cd C:\MeineProjekte\Test


    C:\MeineProjekte\Test>bcc32 Test.cpp
    Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
    Test.cpp:
    Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

    C:\MeineProjekte\Test>



    Gemäss dem Buch müsste zwischen der letzten und zweitletzten Zeile

    C:\MeineProjekte\Test>
    "Hallo Welt"

    stehen,was leider nicht der Fall ist.
    Ich konnte diese Editor Datei in eine *.exe umwandeln.Also wenn ich einen Doppelklick auf die Datei mach geht das Fenster auf und es steht "Hallo Welt"
    Das würde doch heissen das es eigentlich funktioniert?

    Ich hoffe man versteht mein Problem;)
     
  2. Fettbemme

    Fettbemme Halbes Megabyte

    Nur zur Erklärung die beiden Zeilen zeigen Dir an, dass Du Deine Datei Test.cpp compiliert und gelinkt hast.

    Arbeitest Du mit Batch Files? Oder wie werden Deine Projekte erzeugt?

    Nicht umwandeln ... Compilieren und Linken. Wenn in Deinem Buch "umwandeln" steht, dann gehe bitte zur nächsten Tankstelle und kaufe einen Liter Benzin. Übergiesse das Buch damit und verbrenne es an einem Ort wo Feuer keinen Schaden anrichten kann.

    Dann hast Du Dir Dein Exe File ja auch erzeugt, und der Compilierungsvorgang war fehlerfrei. Wenn Du in der Kommandozeile:

    C:\MeineProjekte\Test>Test.exe

    eintippst sollte auch ein "Hallo Welt" in der nächsten Zeile auftauchen.

    Ja.

    Ich hoffe ich hab es verstanden.
     
  3. 0John0

    0John0 Kbyte

    Das heisst das die Datei verarbeitet wurde und zur Verfügung steht?Oder Was meinst du mit gelinkt?Compiliert heisst ja "umwandeln"(obwohl du das Wort hasst;) )Vom Editor in C++ Sprache?


    Sorry ich habe im Buch nichts genaus gefunden,könntest du mir erklären was du meinst? Ist das der Grund warum es in der Eingabeaufforderung nicht funktioniert?
    Ich schreibe die Projekte im ganz normalen Editor und speichere es als *.cpp Datei ab.


    :D Nein nein so steht es nicht drin.Aber im Buch steht von dem gar nichts,ich glaube über das Internet habe ich das herausgefunden,aber ich weiss gar nicht was ich dazu genau gemacht habe:o


    :jump: Wow das funktioniert tatsächlich





    Ja hast du ,ich danke dir vielmal für die Antwort:danke:
    Trotzdem wie schaffe ich das es so aussieht wie im Beispiel vom Buch?
     
    Last edited: Jan 28, 2009
  4. Fettbemme

    Fettbemme Halbes Megabyte

    Für mich ist Compiler=Übersetzer (wenn man es eindeutscchen möchte).

    Der Compiler macht aus Deiner (C++ Quelldatei) einen Zwischencode/Objectfile. Der Linker erzeugt aus einem oder mehreren von diesen Object Files die ausführbare Datei, in Deinem Fall die "Test.exe".

    Hier noch ganz interessant:
    http://de.wikipedia.org/wiki/Compiler
    http://de.wikipedia.org/wiki/Linker_(Computerprogramm)

    Nun Batch Files, da würde ich mal die gute GlassGoogle verwenden, und nach Batch oder Stapelverarbeitung suchen. Es ging mir wie Du Deine *.cpp Datei übersetzt.
     
  5. 0John0

    0John0 Kbyte

    Was meinst du mit Glassgoogel? Einfach im Googel,wie du gesagt hast nach Batch oder Stapleverarbeitung suchen.

    Danke für den Link werde sie mir jetzt mal genau durchlesen.
     
  6. Fettbemme

    Fettbemme Halbes Megabyte

    Ja ich meinte mit der Glassgoogle :google: :D Einfach bei goggle "Stapelverarbeitung" oder "Batchverarbeitung" eingeben. Sollte denke ich die Frage lösen was ich mit Batch meinte...
     
  7. 0John0

    0John0 Kbyte

    :confused:Also ich habe das mal durchgelesen.

    Der Compiler habe ich vertstanden.
    Aber der Linker,ich das hier mal durchgelesen und verstehe es nicht ganz 100%.Er verbindet andere Programmmodule mit meinem Programm,falls diese verwendet werden?



    Der Code wird vom Linker zum Hauptprogramm hinzugefügt, falls die entsprechende Funktion benötigt wird.

    Um ein Programmmodul in einem anderen Programm verwenden zu können, müssen die symbolischen Adressen der Funktionen und Variablen des Moduls in Speicheradressen umgewandelt werden. Diese Aufgabe übernimmt der Linker. Der Linkvorgang erfolgt nach der Kompilierung und ist meistens der letzte Arbeitsschritt zur Erstellung eines Programms. Man unterscheidet generell zwischen statischem und dynamischem Linken.




    Ich habe auch Batch-und Stapelverabreitung um google nachgeschaut.
    Das sind eigentlich dateien,oder "Programme" die immer die gleiche Aufgabe haben.
    Wie ist der Zusammenhang damit, das ich diese Dateien nicht in der Eingabeauffordeung ausführen kann?:confused:
     
  8. 0John0

    0John0 Kbyte

    So jetzt hat es funktioniert.
    Also wenn ich das richtig verstanden habe,schreibt man in editor zBsp im Notepad das Programm.Und dann muss ich es in der Eingabeaufforderung jedesmal zuerst kompilieren und erst dann kann ich das programm ausführen?
    Wenn ich etwas im Programm ändere,muss ich das zuerst speicher,kompilieren und erst dann kann ich es ausführen,richtig?
     
  9. Fettbemme

    Fettbemme Halbes Megabyte

    Korrekt! :jump:

    Auch korrekt :jump:

    Aber ein Hinweis zur der Art wie Du entwickelst:
    Das hat man so vielleicht vor 20 Jahren gemacht. Heutige professionelle Entwicklungstools haben eine (mehr oder weniger) komfortable Benutzeroberfläche. In der Oberfläche kannst Du Deine Quelltexte editieren, compilieren, und debuggen (fehler suchen), und diverse Einstellungen für Compiler / Linker / Debugger / Editor etc. vornehmen. Ob Du heute Programme für den PC entwickelst, oder eine Embedded Plattform (die irgendein Board mit einem Prozessor / Microcontroller sein kann) werden heute solche Entwicklungsumgebungen verwendet, da man damit sehr viel Zeit spart, gerade durch die Möglichkeit des Debuggens.
    Wenn Du mal sehen möchtest, wie eine moderne und zeitgemäße Entwickling durchgeführt wird, könntest Du Dir z.B. die Microsoft Visual C++ 2008 Express Edition anschauen. Die ist kostenlos, und hat im großen und ganzen den Umfang, den professionelle Entwicklungstools haben. Zu finden ist das Teil bei Microsoft auf der Webseite.
    Ich habe Dir das nur geschrieben, damit Du nicht glaubst, dass heute noch Software über die Kommandozeile und externe Editoren erzeugt wird. Das wird in 99% aller Fälle sicher nicht mehr so gemacht werden, da das viel zu aufwändig und unkomfortabel ist.
     
  10. 0John0

    0John0 Kbyte

    Ich habe mir fast gedacht das es so ein bisschen umständlich ist:rolleyes:

    Aber in diesem Buch wird auch auf Microsoft Visual C++ 2008 Express Edition aufmerksam gemacht.Aber der Autor empfiehlt am Anfang auf solche Programme zu verzichten.Er sagt es ist zwar komfortabler aber es kann sein das man nicht alles genau sieht was im Hintergrund geschieht.

    Ich denke ich werde mal so weiterarbeiten und dann später auf das Microsoft Visual C++ 2008 Express Edition wechslen


    Ich danke dir, das du mir bis hierher geholfen hast:danke:
    Vielleicht werde ich mich mal wieder mit einer Frage melden;)
     
  11. Fettbemme

    Fettbemme Halbes Megabyte

    Ich werde den Teufel tun, um Dich von dem vorgeschlagenen Weg in Deinem Buch abzubringen. Ob man da aber mehr sieht mag ich bezweifeln.

    Wenn Du mehr wissen magst würde ich "Compilerbau 1+2" empfehlen oder "Compilers: Principles, Techniques, and Tools", oder "Compiler. Prinzipien, Techniken und Tools". Sind alle von A. W. Aho. Alles im Prinzip das selbe Buch / Bücher. Ist was Compiler angeht das Standardwerk. Nach dem Buch weist Du dann wirklich was ha hinter den Kulissen passiert...
     
  12. 0John0

    0John0 Kbyte

    Ich seh hier einfach den Fehler nicht.Obwohl ich bereits Übungen gemacht habe in diesem Stil,will es einfach nicht mehr funktionieren.
    Wenn ich folgendes Eingebe:

    PHP:
    #include <iostream>
    using namespace std;

    int main()
    {
        
    double zahl1 1.66;
        
        
    double zahl2 2.0;
        
        
    cout << zahl1;
        
    return 
    0;
    }
    Kommt beim Kompilieren folgende Fehlermeldung:

    C:\MeineProjekte\Kap06>bcc32 test2.cpp
    Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
    test2.cpp:

    Warning W8004 test2.cpp 13: 'zahl2' is assigned a value that is never used in function main()

    Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland


    Ich habe es mit Beispiel Programmen verglichen,aber ich fand den Fehler nicht :rolleyes:
     
  13. kazhar

    kazhar Viertel Gigabyte

    kannst englisch?

    >>Warning W8004 test2.cpp 13: 'zahl2' is assigned a value that is never used in function main()

    frei &#252;bersetzt:
    warnung w8004 test2.cpp 13: der variable 'zahl2' wurde zwar ein wert zugewiesen, aber sie wird nie verwendet.
     
  14. 0John0

    0John0 Kbyte

    Und das funktioniert nicht?

    Auch wenn ich eingebe

    PHP:
    cout << zahl1 << zahl2
    kommt die fehlermeldung.Es muss doch m&#246;glich sein die Variable anzuschauen ohne sie zu bearbeiten?
     
  15. kazhar

    kazhar Viertel Gigabyte

    na klar kannst du den variableninhalt ausgeben. dann kriegst du die warnung nicht mehr.


    btw...
    warnung ist nicht gleich fehler. bei einer warnung wird ganz normal weiter kompiliert, aber du wirst eben auf einen "merkw&#252;rdigen umstand" hingewiesen.
     
  16. 0John0

    0John0 Kbyte

    Ach so,danke.Ja jetzt funktionierts.
    Gleich nachdem diese Warnung kam,habe ich gleich wieder im Quellcode nachgeschaut und gar nicht erst probiert das Programm auszuführen:rolleyes:

    Und ist es normal das wenn ich schreibe

    PHP:
    double zahl1 11
    (anstatt 11.0)


    das es eine Weile dauert, etwa 15sek bis das kompiliert ist?
     
  17. Fettbemme

    Fettbemme Halbes Megabyte

    Das ist korrekt. Trotz alledem sollte man Warnings wie Fehler behandeln. Es gibt auch durchaus Warnings, die "Fehlercharakter" haben können.
    z.B.
    Code:
    if (i=0)
    {
    }
    
    Die Borland Compiler liefern soweit ich weis auf dieses Konstrukt das Warning 'Possibly incorrect statement'.
    Ich habe in meinen ~20 Jahren C/C++ Programmiererfahrung noch keinen Greund gehabt auch nur 1 Warning stehen zu lassen.
     
  18. kazhar

    kazhar Viertel Gigabyte

    und was tu' ich wenn mich der lParam nicht interessiert? :D
    LRESULT CALLBACK MsgHookCallback(int nCode, WPARAM wParam, LPARAM lParam)
     
  19. Fettbemme

    Fettbemme Halbes Megabyte

    Hmmm verstehe ich jetzt nicht, wenn Du 'ne Callback funktiomn hast in der Form:

    LRESULT CALLBACK MsgHookCallback(int nCode, WPARAM wParam, LPARAM lParam)
    {
    <... irgendwelcher code der aber kein lParam braucht ...>
    }

    Wieso sollte da der Compiler ein Warning bringen? :grübel:
     
  20. 0John0

    0John0 Kbyte

    ach so.Gut zu wissen das du nach 20Jahren Erfahrung nie einen Grund hattes die Warung stehen zu lassen.Das bedeutet es sollte immer eine "saubere"Lösung geben.
     
Thread Status:
Not open for further replies.

Share This Page