Maison > développement back-end > C++ > Quand l'utilisation de « goto » en C ou C est-elle acceptable ?

Quand l'utilisation de « goto » en C ou C est-elle acceptable ?

DDD
Libérer: 2024-12-15 03:46:14
original
743 Les gens l'ont consulté

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

Bonnes utilisations de Goto en C ou C

Malgré l'opinion souvent répandue selon laquelle goto est universellement nuisible, il existe certaines circonstances où son leur utilisation peut apporter des avantages évidents.

Blocs de nettoyage

Un tel est le cas lors de la création de blocs de nettoyage, un modèle couramment utilisé en C pour garantir une désallocation appropriée des ressources en cas d'erreurs. En utilisant goto, nous pouvons implémenter un bloc de nettoyage comme suit :

void foo()
{
    if (!doA())
        goto exit;
    if (!doB())
        goto cleanupA;
    if (!doC())
        goto cleanupB;

    /* everything has succeeded */
    return;

cleanupB:
    undoB();
cleanupA:
    undoA();
exit:
    return;
}
Copier après la connexion

Ce code permet une gestion claire et efficace des conditions d'erreur. En cas d'erreur dans doB() ou doC(), les fonctions de nettoyage appropriées sont appelées et l'exécution passe à l'étiquette de sortie pour revenir de la fonction.

Branchement inconditionnel spécifique

Goto peut également être bénéfique lors de l'exécution de branchements inconditionnels spécifiques. Par exemple, le code suivant simule une boucle infinie à l'aide de goto :

infinite_loop:

    // code goes here

goto infinite_loop;
Copier après la connexion

Cette approche est plus spécifique et plus auto-documentée que l'utilisation d'une boucle while avec une condition dégénérée, car elle indique clairement l'intention de continuer la boucle. .

Précautions

Il est important de noter que goto ne doit pas être utilisé sans discernement. Cela peut facilement conduire à du code spaghetti s’il n’est pas utilisé judicieusement. Cependant, lorsqu'il est utilisé de manière appropriée, il peut constituer un outil précieux pour créer un code efficace et lisible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal