59 Stimmen

Kann ich in einer ungültigen Funktion zurückkehren?

Ich muss zur vorherigen Ebene der Rekursion zurückkehren. Ist die Syntax wie unten richtig?

void f()
{
   // some code here
   //
   return;
}

29 Stimmen

H

3voto

ThinkingInBits Punkte 9920

Ja, manchmal möchten Sie vielleicht void() zurückgeben, anstatt einfach nichts.

Betrachten Sie eine ungültige Funktion, die einige pass-through ungültige Funktionen ohne eine Reihe von if-else aufrufen möchte.

return 
  InputEvent == E_Pressed ? Controller->Grip() :
  InputEvent == E_Released ? Controller->Release() :
  InputEvent == E_Touched ? Controller->Touch() : void();

2voto

Craig Punkte 1159

Das Programm kehrt von selbst zur vorherigen Funktion zurück. Gehen Sie in den Debug-Modus und gehen Sie schrittweise vor, dann können Sie es selbst sehen. Andererseits glaube ich nicht, dass ein Rücksprung dort dem Programm schadet.

1voto

dromodel Punkte 8833

Wie alle anderen schon sagten: Ja, das können Sie. In diesem Beispiel ist die Rückgabe nicht notwendig und dient einem fragwürdigen Zweck. Ich denke, was Sie meinen, ist eine frühe Rückkehr in der Mitte einer Funktion. Das kann man auch machen, aber es ist eine schlechte Programmierpraxis, weil es zu einem komplizierten Kontrollfluss führt (nicht single-entry single-exit), zusammen mit Anweisungen wie break. Überspringen Sie stattdessen einfach den Rest der Funktion mit Hilfe von Konditionalen wie if/else().

0voto

magrif Punkte 316

Ja, zum Beispiel:

void foo()
{
    // do smth
}

und dann

void bar(bool condition)
{
    if (condition) {
        return foo(); //its ok
    }
    // else do smth
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X