www.mikrocontroller.net

Forum: Compiler & IDEs Funktion beenden mit return


Autor: Dietmar P. (dietmar2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tim T. (tim_taylor)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dietmar P. (dietmar2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.