Forum: Compiler & IDEs Funktion beenden mit return


von Dietmar P. (dietmar2)


Lesenswert?

Hallo,

habe schon wieder eine Frage zum Syntax von GCC.

Ich möchte eine Unterfunktion, die ich im main aufrufe beenden, z.B.

  if (wert == 0){
      return;
      }

In der der Literatur steht bei mir immer return mit einem Rückgabewert, 
also
z.B. "return 0;"

Ich brauche keinen Rückgabewert und will nur die Funktion nicht kpl. 
durchlaufen, kann ich dann auf die "0" verzichten? Mein Compiler meckert 
es nicht an.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Eine Funktion, die keinen Rückgabewert haben soll, bekommt als Typ
ein "void".  Dies zeigt dem Compiler explizit an, dass kein Wert
zurück gegeben werden darf, und dass auch nicht versucht werden
darf, einen Rückgabewert von der Funktion zu erhalten.

Selbstverständlich darf in so einem Fall dann das return nicht von
einem Ausdruck gefolgt werden.

von Klaus (Gast)


Lesenswert?

Dietmar P. schrieb:
> In der der Literatur steht bei mir immer return mit einem Rückgabewert,
> also

Das wage ich zu bezweifeln ;-)

Dietmar P. schrieb:
> Mein Compiler meckert
> es nicht an.

Ja, da hat er auch keinen Grund zu. Wie sonst sollte man eine 
void-Funktion verlassen können?

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Ob du einen Wert zurück gibst oder nicht, hängt davon ab welchen 
Rückgabetyp deine Funktion hat.

return ohne Wert ist nur bei void Funktionen zulässig.

Schau dir das Compilieren nochmal mit -Wall an.

von Dietmar P. (dietmar2)


Lesenswert?

OK, verstanden.

Vielen Dank für Eure Antworten.

Das mit dem void hatte ich schon verstanden, aber in meinen Unterlagen 
war immer return mit Rückgabewert erklärt und daher verunsichert.

von Karl H. (kbuchegg)


Lesenswert?

Dietmar P. schrieb:
> OK, verstanden.
>
> Vielen Dank für Eure Antworten.
>
> Das mit dem void hatte ich schon verstanden, aber in meinen Unterlagen
> war immer return mit Rückgabewert erklärt und daher verunsichert.

An dieser Stelle hättest du es sogar einfach nur ausprobiern brauchen.
Der Compiler hätte dir da schon auf die Finger geklopft :-)

(Aber das ist nur ausnahmsweise. Selbstverständlich wird im Allgmeinen 
nicht einfach nur wild drauf los probiert :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.