• [^] # Re: goto return cave

    Posté par (site web personnel) . En réponse au journal Is return the new goto ?. Évalué à 3.

    Ceci dit il me semble que kantien parle de remplacer les goto, par des try/catch.
    Les extensions dont tu parles servent à faire soit un genre de RAII, soie des defer.
    Le seul compilateur C qui gère try/catch, c'est MSVC.

    Personnellement, j'aime beaucoup les mécanismes de defer, et autres, car ça permet de gérer la libération des ressources, au moment où on les crée, et donc moins de chances d'oublier.
    Le problème des goto out; c'est qu'on a le label out à la fin de la fonction, et c'est facile d'oublier de rajouter le free.
    Avec les try/catch, le problème reste assez similaire aux goto.

    C'est moi qui avais push la 1re version de attribute cleanup dans tinycc, (qui était pas mal bugué, les mainteneurs ont quand même pas mal amélioré mon code). Je n'aurais clairement pas fait le même effort pour imiter les try/catch de MSVC.