Heim >Backend-Entwicklung >C++ >Wann ist die Verwendung von „goto' in C oder C akzeptabel?

Wann ist die Verwendung von „goto' in C oder C akzeptabel?

DDD
DDDOriginal
2024-12-15 03:46:14748Durchsuche

When is Using `goto` in C or C   Acceptable?

Gute Verwendung von Goto in C oder C

Trotz der häufig vertretenen Ansicht, dass Goto allgemein schädlich ist, gibt es bestimmte Umstände, unter denen dies der Fall ist Die Verwendung kann klare Vorteile bringen.

Aufräumblöcke

Eine davon Der Fall liegt in der Erstellung von Bereinigungsblöcken, einem in C häufig verwendeten Muster, um im Fehlerfall eine ordnungsgemäße Freigabe von Ressourcen sicherzustellen. Mit goto können wir einen Bereinigungsblock wie folgt implementieren:

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 Code ermöglicht eine klare und effiziente Behandlung von Fehlerbedingungen. Im Falle eines Fehlers in doB() oder doC() werden die entsprechenden Bereinigungsfunktionen aufgerufen und die Ausführung geht zum Exit-Label über, um von der Funktion zurückzukehren.

Spezifische bedingungslose Verzweigung

Goto kann auch bei der Durchführung einer bestimmten bedingungslosen Verzweigung von Vorteil sein. Der folgende Code simuliert beispielsweise eine Endlosschleife mit goto:

infinite_loop:

    // code goes here

goto infinite_loop;

Dieser Ansatz ist spezifischer und selbstdokumentierender als die Verwendung einer While-Schleife mit einer degenerierten Bedingung, da er klar die Absicht angibt, die Schleife fortzusetzen .

Vorsichtsmaßnahmen

Es ist wichtig zu beachten, dass goto nicht verwendet werden sollte wahllos. Wenn es nicht mit Bedacht eingesetzt wird, kann es leicht zu Spaghetti-Code führen. Bei richtiger Verwendung kann es jedoch ein wertvolles Werkzeug zum Erstellen von effizientem und lesbarem Code sein.

Das obige ist der detaillierte Inhalt vonWann ist die Verwendung von „goto' in C oder C akzeptabel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn