razuki
Messages postés242Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention 5 décembre 2012
-
31 mars 2011 à 16:45
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
31 mars 2011 à 17:56
Bonjour,
J'ai repris une couche écrite en c++ et je dois rajouter une couche SSL dessus. le mec qui a écrit la couche a mis plein de goto, et du coup, je dois utiliser ses goto. Ca me génère des erreurs du type "error: crosses initialization". Est ce que il y a d'autres solutions à part mettre des accolades pour délimiter la durée de vie d'un objet initialisé ?
Merci d'avance pour votre aide.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 31 mars 2011 à 17:34
Tu n'as pas vraiment le choix. Je te plains de devoir reprendre ce genre de code...
Si tu en as la possiblité, refuse de prendre son code. Sinon, limiter la portée d'un objet avec des accolades et bien la bonne solution.
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
razuki
Messages postés242Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention 5 décembre 2012 31 mars 2011 à 17:43
Je ne pas refuser, lol...
Ce qu'il aurait pu faire c'est créer des fonctions de gestions d'erreur au lieu de faire des goto ? l'alternative à goto c'est quoi si on veut executer le meme bloc de code en cas d'erreur :
if( erreur )){
log(ERROR, "il y a erreur");
goto traiter_erreur;
}
...
traiter_erreur:
free(mem_allouee1);
free(mem_allouee2);
...
return -1;
Est ce que ceci une bonne manière :
if( erreur )){
log(ERROR, "il y a erreur");
return traiter_erreur(...);
}
int traiter_erreur( ...){
free(mem_allouee1);
free(mem_allouee2);
...
return -1;
}
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 31 mars 2011 à 17:56
Difficile de te répondre sans voir le code. Mais j'aurais utilisé une fonction, voir un système d'exception. Si tu dois reprendre son code, essaie de ne pas le modifier, et de le rendre compatible. Le problème de la réécriture, même partiel, c'est d'introduire des régressions.
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question