Anfänger erstellt 1.Programm mit FEHLER!!!



  • Also ich habe folgenden Quellcode:

    #include <iostream.h>
    
    main()
    {
       cout << "Hallo" << endl;
    }
    

    Fehler sieht so aus:

    "warning:no newline at end of file"

    Was habe ich falsch gemacht???



  • Hi,

    mach eine Leerzeile ans Ende der Datei.

    mfg
    v R



  • ok, danke!
    Habe ich gemacht aber jetzt will er es nicht ausführen!

    Anmerkung: Ich benutze KDevelop2.0!



  • dein Code ist außerdem falsch!

    Lies dir mal folgende Links durch

    Was ist falsch an void main() { /* ... / } bzw. main() { / ... */ }?

    Sollte man <iostream.h> oder <iostream> verwenden?

    außerdem hat deine Frage nichts mit Unix direkt zu tun, sondern mit C++ gehört also in den C++ Teil



  • Heists nicht irgendwie int main??



  • Hab heut einen guten Tag, allerdings solltest du bevor du meinen Code nur mit Copy&Paste nimmst ihn mit deinem Code vergleichen!

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

    MfG SideWinder



  • irgendwie funzt das nicht!
    Ich benutze den KDevelop 2.0 auf LINUX RedHat 7.2
    und zwar deshalb, weil ich mal C++ auf Linux ausprobieren wollte.

    Jetzt macht er zwei Objekt-Dateien:
    -main.o
    -test.o

    dann sagt er, dass 'main' doppelt definiert wurde.

    Warum?



  • das sollte jetzt abe rein problem mit kdevelop sein. hast du etwa 2 dateien im project in denen jeweils die main drinsteht?



  • Ich glaube das "iostream.h" muss so geschrieben werden! Mit h am Ende



  • Probier das mal:

    #include "stdafx.h"
    #include "iostream.h"
    
    int main()
    {
      cout<<"Hallo!"<<endl; 
    
        return 0;
    }
    

    Bei mir klapps.
    Programmiere mit MS Visual C++



  • hy noch mal.

    ob jetzt die includes mit h oder ohne sind hängt vom standard ab.

    #include <iostream>
    using namspace std
    // neue und korrecte verwendung !!! diese implementierung sollte auf
    // allen compilern und platforemn gleich sein im verhalten.
    
    #include <iostream.h>
    // alte include anweisungen. hirbei ist das verhalten vom hersteller 
    // abhängeg, da damals nicht alles 100%ig definiert war im standard.
    // solte daher nach möglichkeit vermieden werden.
    

    gruss termite

    ps. #include <stdfx.h> wird nur von den microdof indianern verwendet und gehört somit zum vc++ compiler



  • iostream.h ist falsch! Laut C++98 Standard ist iostream.h veraltet!

    @WinnieCE
    wenn das 3 Leute sagen die hier viel Posten unter denen auch Hume Sikkins, der C++ Gott des Forums, dann kannst du dem ruhig glauben



  • Original erstellt von kingruedi:
    **iostream.h ist falsch! Laut C++98 Standard ist iostream.h veraltet!

    @WinnieCE
    wenn das 3 Leute sagen die hier viel Posten unter denen auch Hume Sikkins, der C++ Gott des Forums, dann kannst du dem ruhig glauben**

    Gott? Hmm...

    MfG SideWinder



  • Hmm... ob das jetzt nun 3, 1 oder 10000 Leute sagen! Das löst alles nicht mein Problem!

    Nochmal:
    Wenn ich unter LINUX RedHat7.2 mit dem KDevelop2.0 folgenden Programmcode eingebe:

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

    beim kompilieren ist alles ok! Also erfolgreich abgeschlossen.
    Aber wenn ich auf 'neu erstellen' drücke dann sagt er, dass in den Objekt-Dateien 'main.o' und 'test.o' main schon definiert wurde.
    Als erstes wurde main in test.o definiert!
    Am Ende kann ich das Programm also nicht starten!

    Danke nochmal für Antworten!



  • Ich kenn mich mit KDevelop zwar nicht aus, aber ich weiß das es sich hierbei um ein framework für oberflächenprogrammierung handelt. Als solches stellt es einen kompletten rahmen für das erstellen von programmen zur verfügung. Ich nehme an, das dabei auch die main-funktion mit definiert wird. Das gleiche verhalten zeigt die mfc übrigens auch. Frameworks für oberflächen stellen häufig eine eigene main zur verfügung, weil viel arbeiten zu erledigen sind, bevor überhaupt das eigentliche programm startet.

    Wie gesagt - ich kenn mich mit KDevelop nicht aus - da sollte vieleicht ein spezialist in diesem bereich mal drauf schauen.

    Für eine einfache konsolenanwendung wie hier ist KDevelop übrigens garnicht notwendig.



  • ich frag mich gerade wieso du 2 object files bei deinem project krigst obwohl das nur ein hello world ist? hast du etwa 2 cpp dateien im project die jeweils die main implementieren? 2. erhälst du scheindsich nur die .o fils keine binary. keine gelinkte ausfürbare datei. was verständlich ist, da sich ein programm mit 2 obj dateien die jeweils die main enthalten nicht zu einem ausfürhbaren programm linken lassen ( was den fehler main doppelt definert erklähren würde )

    forschlag meinerseits versuch mal dein programm mitels gcc direckt selber zu übersetzen. du soltest dabei dann die .o datei und die datei "a" bekommen die du dann ausführen kanst.

    gruss termite



  • Stimmt!
    Da war eine main.cpp und eine test.cpp im Verzeichnis.
    Woher kommt denn die main.cpp? Ich habe die noch nie erstellt!



  • Jetzt habe ich die main.cpp und die main.o gelöscht! Jetzt will KDevelop gar nichts mehr machen!
    MIST!



  • kann sein das kdevelop in der main.cpp die main haben will. also deine test nach main umgenenen. vieleicht gehts dann. solche programme haben meist ihre tücken. kann mich an die kaffemaschine von symantech erinnern. wenn die mainklasse nicht den gleichen nahmen hatte wie das projeckt und die datei. gings net. suns java compiler hats net interesiert. nur auf solche sachen mal kommen.

    vorschalg leg mal ein neues project an. und kopier dir die main einfach mal rein. vieleicht gehts dann. scheind ja nur noch ein problem mit der ide zu sein.

    gruss termite



  • Hallo,
    ich verschiebe die Frage jetzt mal nach Andere Compiler. Wenn die IDE muckt, hat das ja schließlich nichts mehr mit Standard-C++ zu tun.


Anmelden zum Antworten