Funktion und return (EXIT_FAILURE)

Diskutiere Funktion und return (EXIT_FAILURE) im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Hi Community! Wie der Name schon des Threads sagt, habe ich eine Frage zu Funktionen und der Rückgabe-Funktion. Ich schreibe unter Linux und...

  1. Yellow

    Yellow Doppel-As

    Dabei seit:
    04.06.2007
    Beiträge:
    149
    Zustimmungen:
    0
    Ort:
    Bad Arolsen
    Hi Community!

    Wie der Name schon des Threads sagt, habe ich eine Frage zu Funktionen und der Rückgabe-Funktion.

    Ich schreibe unter Linux und Compiliere mit GCC.

    Wenn ich ein Programm schreibe und in einer Funktion s.Bsp.

    Code:
    /* Einfaches Rechnen */
    #include <stdio.h>
    #include <stdlib.h>
    
    void plus(int a) {
       if ( NULL==a )  {
          a+=10;
          printf( "%i\n" , a );
       }
       else
       {
          perror(NULL);
          return (EXIT_FAILURE); // Ohne Klammern auch das Problem!
       }
    }
    
    int main(int argc, char **argv) {
       if ( argc < 2 ) {
          perror(NULL);
          return (EXIT_FAILURE);
       }
       else
       {
          plus(*++argv);
       }
    return (EXIT_SUCCESS);
    }
    
    So das Problem ist bei mir das wenn ich sowas Compiliere, dann sagt der mit sowas wie "Error: Return Value in void Funtion plus". Also so ungefähr.

    Bin gerade im I-Cafe und habe die Fehlermeldung nicht vor Augen. Dennoch sagt der mir das immer wenn ich in einer Funktion "return (EXIT_FAILURE)" schreibe!

    Woran liegt das? Benutze den Compiler mit mit folgendem Syntax:

    gcc -Wall -o source source.c

    Hoffe ich habe mein Problem Verständlich geschildert? :)

    Yellow
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Ja, das Problem ist klar, vor allem mit dem Codebeispiel. Du deklarierst eine Funktion
    Code:
    void plus(int a);
    
    das void sagt dem Kompiler, dass diese Funktion nichts zurueckgibt. Das heisst, bestenfalls duerfte in ihr ein 'return;' ohne Argument vorkommen, oder gar kein return.

    Du benutzt die Zeile 'return (EXIT_FAILURE);' womit dies Funktion einen Zahlenwert (1, definiert in stdlib.h) zurueckgibt. Damit stimmen Deklaration und Verhalten der Funktion nicht ueberein, weswegen der Kompiler sich beschwert. Lass das 'return' innerhalb der Funktion 'plus' ganz weg, dann geht auch die Kompilermeldung weg.
     
  4. #3 Yellow, 02.07.2007
    Zuletzt bearbeitet: 02.07.2007
    Yellow

    Yellow Doppel-As

    Dabei seit:
    04.06.2007
    Beiträge:
    149
    Zustimmungen:
    0
    Ort:
    Bad Arolsen
    Ja aber wenn ich das weglasse, dann läuft doch das Programm weiter. Aber es soll doch da dann sofort aussteigen! Kann ich denn die Funktion dafür anders Declarieren?

    Bin halt noch new in dem Gebiet ;)

    -----------------------------
    EDIT: Also wenn ich z.B. die Funktion so deklariere, dann sollte es doch gehen oder?
    Code:
    int plus(int a) {
    
     
  5. #4 matzeed7, 02.07.2007
    matzeed7

    matzeed7 Mitglied

    Dabei seit:
    28.10.2006
    Beiträge:
    38
    Zustimmungen:
    0
    vielleicht das return durch exit(-1); ersetzen um das prog zu beenden!
     
  6. #5 darktrym, 02.07.2007
    Zuletzt bearbeitet: 02.07.2007
    darktrym

    darktrym Grünschnabel

    Dabei seit:
    23.01.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Wieso willst du einer Funktion ohne Rückgabe einen Wert zuweisen?

    Versteh dein Programm nicht!
    1. argv ist einer Zeichenkette und die Funktionsrumpf passt dazu nicht. Der Typ für a(int) muss vorher erst umgewandelt werden.
     
  7. Anzeige

    Vielleicht findest du in dieser Kategorie etwas passendes.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 root1992, 02.07.2007
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Du kannst entweder:
    void plus(int a){
    return:
    }
    oder
    int plus(int a){
    return EXIT_SUCCESS;
    }
    so wie ich das gesehen hab. Weil nen returnwert in ner void Funktion, der ein int (?) ist ???
     
  9. Yellow

    Yellow Doppel-As

    Dabei seit:
    04.06.2007
    Beiträge:
    149
    Zustimmungen:
    0
    Ort:
    Bad Arolsen
    Sry Leute das ich erst so spät anworte. Aber ich habe kein Internet und gehe dann immer ins I-Cafe.

    Darktrym: Es handelt sich dabei nur um ein kleines Beispiel für meine Frage. Soll nicht wirklich ein Gut programmiertes Proggy sein ;)

    Matzied7: Ja das mit dem exit() ist mir auch bekannt. Doch es war einfach mal reine neugier warum das mit dem "return" nicht funktioniert!

    Ich habe mich in meinem Lehrbuch noch etwas weiter durch gearbeitet und habe dann dort auch noch genauer erklärt bekommen warum es nicht funktioniert und das ich dann doch die Funktion exit() verwenden sollte. Ich danke euch für eure Hilfe.

    Ich denke ich habe es nun geschnallt ;)

    Yellow
     
Thema: Funktion und return (EXIT_FAILURE)
Besucher kamen mit folgenden Suchen
  1. return exit_failure

Die Seite wird geladen...

Funktion und return (EXIT_FAILURE) - Ähnliche Themen

  1. Unix Shell Funktionen funktionieren nicht

    Unix Shell Funktionen funktionieren nicht: Guten Tag Ich hoffe sehr, dass Sie mir weiterhelfen können, denn ich habe ein riesiges Problem: Zurzeit arbeite ich mit meinem Server an einem...
  2. Shell: Funktion ls Not found

    Shell: Funktion ls Not found: Hallo zusammen. Ich habe vor längerer Zeit mal mit Ubuntu gearbeitet wo ich auch ein paar befehle im Terminal gelernt habe. Nun zu meinem...
  3. CentOS 7.2: Mailversand funktioniert obwohl nicht definiert

    CentOS 7.2: Mailversand funktioniert obwohl nicht definiert: Hallo Habe CentOS 7.2 installiert/konfiguriert. Testweise habe ich eine mail versendet: mail -s "test mail" email@adresse.de May 25 15:45:04...
  4. In eigener Sache: Neue, stark verbesserte Suchfunktion

    In eigener Sache: Neue, stark verbesserte Suchfunktion: Pro-Linux läuft nun mit der erneuerten Version 1.5 des Content Management Systems NB3. Die wichtigste sichtbare Änderung ist die neue, auf der...
  5. Funktionssuche in C: Emacs oder Vim?

    Funktionssuche in C: Emacs oder Vim?: Hallo, ich muss mir häufig C-Projekte angucken, und dann suche ich bspw., wo eine aufgerufene Funkion definiert oder deklariert (Header) wird....