Beispiele für vorteilhafte Goto-Implementierungen in C und C
Trotz der weit verbreiteten Ablehnung gegenüber Goto-Anweisungen gibt es Fälle, in denen sie effektiv eingesetzt werden kann . In diesem Thread werden solche Fälle untersucht, inspiriert von einer positiv bewerteten Antwort, die ursprünglich als Witz aufgefasst wurde.
Fallstudie: Endlosschleife
Das folgende Beispiel zeigt eine konkrete und dokumentierte Antwort Verwendung von goto:
infinite_loop: // code goes here goto infinite_loop;
Diese Schleife ist aufgrund ihrer Klarheit und Spezifität Alternativen vorzuziehen. Goto stellt einen unbedingten Zweig dar, während seine Alternativen auf Strukturen mit bedingten Zweigen und degenerierten, immer wahren Bedingungen basieren. Darüber hinaus dokumentiert das Etikett die Absicht, sodass keine zusätzlichen Kommentare erforderlich sind.
Fallstudie: Bereinigung in C
In C wird goto häufig zum Verzweigen verwendet zu einem Bereinigungsblock:
void foo() { if (!doA()) goto exit; if (!doB()) goto cleanupA; if (!doC()) goto cleanupB; /* everything has succeeded */ return; cleanupB: undoB(); cleanupA: undoA(); exit: return; }
Dieser Ansatz ermöglicht eine prägnante und strukturierte Fehlerbehandlung. Jede potenzielle Fehlerbedingung wird mit einer goto-Anweisung behandelt, die zum entsprechenden Bereinigungscode verzweigt. RAII in C bietet eine idiomatischere Möglichkeit, mit solchen Szenarien umzugehen.
Kriterien für die Bewertung
Um eine faire Bewertung zu gewährleisten, wurden die folgenden Kriterien festgelegt:
Das obige ist der detaillierte Inhalt vonWann ist „goto' in C und C tatsächlich von Vorteil?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!