ISO C++ forbids declaration of 'leerzeile' with no type



  • Hi Leute,
    ich bin gerade am C lernen und habe ein Programm wie in meinem Buch genau nachgeschrieben. Bei Compilieren hat mir der DevC++-Compiler einen Fehler angezeigt: ISO C++ forbids declaration of 'leerzeile' with no type (Warscheinlich hab ich nur wieder was übersehen).
    Der Code ist:

    #include <stdio.h>

    leerzeile()
    {
    int x;
    for(x=1; x<=25; x=x+1)
    {
    printf("\n");
    }
    }

    main()
    {
    int x,y,z;
    leerzeile();
    printf("\n Bitte |x| eingeben > ");
    scanf("%i",&x);
    leerzeile();
    printf("\n Bitte |y| eingeben > ");
    scanf("%i",&y);
    leerzeile();
    printf("\n Bitte |z| eingeben > ");
    scanf("%i",&z);
    leerzeile();
    printf("\n %i + %i + %i = %i",x,y,z,x+y+z);
    }

    Danke im Voraus für alle Antworten.



  • #include <stdio.h> 
    
    leerzeile() // Rückgabetyp fehlt
    { 
        int x;
        for(x=1; x<=25; x=x+1) 
        { 
            printf("\n"); 
        } 
    } 
    
    main() // Rückgabetyp fehlt
    { 
        int x,y,z;
        leerzeile(); 
        printf("\n Bitte |x| eingeben > "); 
        scanf("%i",&x); 
        leerzeile(); 
        printf("\n Bitte |y| eingeben > "); 
        scanf("%i",&y); 
        leerzeile(); 
        printf("\n Bitte |z| eingeben > "); 
        scanf("%i",&z); 
        leerzeile(); 
        printf("\n %i + %i + %i = %i",x,y,z,x+y+z); 
    }
    

    Das ist zwar C, aber du kompilierst mit einem C++ Compiler. Wenn du es mit einem C Compiler (oder dem C++ Compiler im C-Modus) kompilieren würdest, dann wäre das kein Problem.
    Da du hier im C Forum bist, gehe ich davon aus dass du auch C programmeirst, und nicht C++. Also darfst du den Rückgabetyp weglassen, musst aber dem Compiler sagen dass er den Code as C Code kompilieren soll. 😉



  • Danke für den Tipp, aber vorher habe ich auch mit einem (anderen) C++-Compiler compiliert (mit dem BorlandC++). Wie kann ich den Compiler auf C umstellen?



  • Das Buch muss ja sehr alt sein.

    In C wurde implizit der Rückgabetyp int angenommen, wenn keiner angegeben wird.
    Das ist aber seit C99 verboten (also seit 15 Jahren)

    Du solltest darum dem Compiler noch den C-Standard angeben.



  • Die letzten Borland C++ Versionen sind von 1997.
    Ob damit noch jemand arbeitet?

    Du musst mal die Compileroptionen in den Projekteinstellungen durchsehen.



  • Ja, das Buch ist sehr alt... ich weiß.

    Aber was muss ich jetzt da genau eingeben, damit er keinen Fehler mehr anzeigt?



  • - bei "New project" auf "C Project" einstellen
    - Tools -> "Compiler Options" -> "Add the following commands when calling compiler:" -> "-ansi"

    http://ceng230.ceng.metu.edu.tr/Compilers/dev-cpp.html



  • Eine Lösung hätte ich gefunden: Man muss den Sourcefile in .c speichern, aber es muss doch auch eine dauerhafte Lösung geben, oder?



  • Danke.



  • Phynix schrieb:

    Eine Lösung hätte ich gefunden: Man muss den Sourcefile in .c speichern, aber es muss doch auch eine dauerhafte Lösung geben, oder?

    Es gibt zwei sehr einfache Lösungen:

    1. Einen uralten Compiler besorgen.
    2. Ein modernes Buch besorgen.
      Kommt drauf an, ob du eher historisch/archäologisch oder an Programmierung interessiert bist.


  • Phynix schrieb:

    Eine Lösung hätte ich gefunden: Man muss den Sourcefile in .c speichern, ...

    Das ist bei einem C-Quellcode auch sinnvoll.


Anmelden zum Antworten