Anzeige:
Ergebnis 1 bis 13 von 13

Thema: [C++] Problem mit exit(1) beim kompilieren.

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55

    [C++] Problem mit exit(1) beim kompilieren.

    Das hier ist aus einem ncurses howto:
    Code:
    #include <ncurses.h>
    
    int main(int argc, char *argv[])
    { 
        int ch, prev;
        FILE *fp;
        int goto_prev = FALSE, y, x;
    
        if(argc != 2)
        {   printf("Usage: %s <a c file name>\n", argv[0]);
            exit(1);
        }
        fp = fopen(argv[1], "r");
        if(fp == NULL)
        {   perror("Cannot open input file");
            exit(1);
        }
    
        initscr();                      /* Start curses mode            */
    
        prev = EOF;
        while((ch = fgetc(fp)) != EOF)
        {   if(prev == '/' && ch == '*')    /* If it is / and * then olny
                                             * switch bold on */    
            {   attron(A_BOLD);
                goto_prev = TRUE;       /* Go to previous char / and
                                         * print it in BOLD */
            }
            if(goto_prev == TRUE)
            {   getyx(stdscr, y, x);
                move(y, x - 1);
                printw("%c%c", '/', ch); /* The actual printing is done
                                          * here */
                ch = 'a';                /* 'a' is just a dummy
                                          * character to prevent */
                                         // "/*/" comments.
                goto_prev = FALSE;      /* Set it to FALSE or every 
                                         * thing from here will be / */
            } else
                printw("%c", ch);
            refresh();
            if(prev == '*' && ch == '/')
                    attroff(A_BOLD);        /* Switch it off once we got *
                                               and then / */
            prev = ch;
        }
        getch();
        endwin();                       /* End curses mode                */
        return 0;
    }

    Jetzt hab ich das Problem, das ich beim kompilieren diesen Fehler bekomme:

    Code:
    nc.cc: In function `int main(int, char**)':
    nc.cc:12: error: `exit' undeclared (first use this function)
    nc.cc:12: error: (Each undeclared identifier is reported only once for each function it appears in.)
    Warum? Ist da irgendwas veraltet? Bin totaler c++ NOOB....
    Bitte klärt mich auf.

  2. #2
    Registrierter Benutzer
    Registriert seit
    12.02.2001
    Beiträge
    30
    Code:
    #include <stdlib.h>
    bzw.
    Code:
    #include <cstdlib>
    The main failure in computers is usually between keyboard and chair.

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55
    Jetzt kommt diese Fehlermeldung:

    Code:
    /home/jan/tmp/ccq7AQOJ.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
    collect2: ld returned 1 exit status
    Aus dieser meldung werd ich garnicht schlau.


    Edit: Muss ich das irgendwie beim kompilieren verlinken?
    also so wie:

    "g++ test.cc -o test -lncurses"


    hab mal perobiert das so zu kompilieren:
    "g++ test.cc -o test -lncurses -lcstdlib(-lstdlib)"

    funzt aber beides nicht...
    Geändert von fraggo01 (29-06-2004 um 13:46 Uhr)

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

    Ot

    @fraggo01

    Dein gesamter Code ist kein C++ sondern C.

    Cu
    André
    C und C++

  5. #5
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55
    hmpf, na ja dann kanns ja nicht gehen...
    mit "gcc test.c -o test -lncurses" funzt es...


    In c++ würde der code also anders lauten müssen? Oder muss ncurses mit c programmiert werden?

    Aber was bewirkt "#include <cstdlib>"??
    Geändert von fraggo01 (29-06-2004 um 14:23 Uhr)

  6. #6
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Zitat Zitat von fraggo01
    hmpf, na ja dann kanns ja nicht gehen...
    mit "gcc test.c -o test -lncurses" funzt es...


    In c++ würde der code also anders lauten müssen? Oder muss ncurses mit c programmiert werden?

    Aber was bewirkt "#include <cstdlib>"??
    Zum einen ist Ncurses ne C Lib und desweiteren nimmt man in C++ die fstream Klasse, wenn man mit Datein arbeiten will, etc.

    Cu
    André
    C und C++

  7. #7
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55
    Ach mist, vielleicht sollte ich wirklich erst mal c lernen.

    Zum einen ist Ncurses ne C Lib
    Also kann ich ncurses in c++ nicht includen? bzw ich brauche für ncurses kein c++, weil c lange dafür ausreicht...
    Geändert von fraggo01 (29-06-2004 um 14:35 Uhr)

  8. #8
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Zitat Zitat von fraggo01
    Also kann ich ncurses in c++ nicht includen?
    Klar kannst du Ncurses auch in nem C++ Programm benutzen, nur hast du da keinen puren C++ Code. Du kannst aber auch nach ner Wrapper Lib von für Ncurses in C++ suchen. U.A. für GTK gibt es sowas ja.
    Ach mist, vielleicht sollte ich wirklich erst mal c lernen.
    Wie gesagt, ist dein ganzer Code da oben in C.

    Cu
    André
    C und C++

  9. #9
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55
    Na ja hab ich hier her:
    http://en.tldp.org/HOWTO/NCURSES-Pro...TO/attrib.html


    Hätte ich richtig gelesen, dann wäre mir das wahrscheinlich selber aufgefallen.
    Wie gesagt, bin totaler noob, hab vor 4 tagen oder so angefangen...

    Aber ich bedanke mich erstmal und werde mal versuchen das oben in c++ zu schreiben.

  10. #10
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Zitat Zitat von fraggo01
    Aber ich bedanke mich erstmal und werde mal versuchen das oben in c++ zu schreiben.
    Keine Ursachen. Aber wenn du wirklich C++ lernen willst, dann solltest du dir ein ordentliches Buch besorgen, dass dir vorallem auch gut und klar zeigt, was die Unterschiede und Gemeinsamkeiten von C und C++ sind.

    Cu
    André
    C und C++

  11. #11
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55
    Aber wenn du wirklich C++ lernen willst, dann solltest du dir ein ordentliches Buch besorgen, dass dir vorallem auch gut und klar zeigt, was die Unterschiede und Gemeinsamkeiten von C und C++ sind.
    Kannst du mir eins empfehlen?

  12. #12
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Zitat Zitat von fraggo01
    Kannst du mir eins empfehlen?
    Das soll ein sehr gutes Buch sein, leider hab ich es aber noch nicht selber lesen können: http://www.amazon.de/exec/obidos/ASIN/3826608240/
    Ansonsten ist "Die C++ Programmiersprache" von dem C++ Vater Bjarne Stroustrup als Referenz immer zu empfehlen: http://www.amazon.de/exec/obidos/ASIN/3827320585/ Es ist aber halt eine Referenz und eher weniger zum lernen gedacht.

    Cu
    André
    C und C++

  13. #13
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55
    den ersten Teil hab ich schonmal

    Code:
    int main(int argc, char *argv[])
    { 
    ifstream fs (argv[1]);
        if(argc != 2)
        {
        	cout<<"Usage: ./test filename>\n"<<endl;
         	return 0;
        }
        
        if(fs)
        {
    	    char text;
    	    fs>>text;
    	    fs.close();
        }
        else
        cerr<<"Cannot open input file"<<endl;
    
    return 0;
    }
    geht bestimmt noch besser...

    Aber ich glaube ich verstehe so langsam was Objektorientiert Programmieren heisst.
    In c++ ist das alles irgendwie viel direkter...
    Schon die bildschirmein/ausgabe ist einfach zu verstehen, find ich.
    Na ja mal sehen ob ich den anderen teil auch noch gebacken kriege.

Lesezeichen

Berechtigungen

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