Vous utilisez le goto dans certains cas ?
Bonjour je mets une fonction, dite moi laquelle vous préférez. (Ceci est tiré du livre Métier développeur : Kit de survie)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| int maFonction(const char * filename, int taille)
{
FILE * fp = fopen(filename, "rb");
if(fp == 0)
{
printf("file not found");
return ERR1;
}
char * buffer = new char[taille];
if(buffer == 0)
{
fclose(fp);
printf("out of memory");
return ERR2;
}
int read = fread(buffer, 1, taille, fp);
if(read != taille)
{
delete []buffer;
fclose(fp);
printf("read error");
return ERR3;
}
delete []buffer;
fclose(fp);
return 0;
} |
Voici la deuxième fonction écrite différemment :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
int maFonction(const char * filename, int taille)
{
int err=0;
char * buffer = 0;
FILE * fp = fopen(filename, "rb");
if(fp == 0) { err=ERR1; goto Exit; }
buffer = new char[taille];
if(buffer == 0) { err=ERR2; goto Exit; }
int read = fread(buffer, 1, taille, fp);
if(read != taille) { err=ERR3; goto Exit; }
Exit:
if (buffer!=0) delete []buffer;
if (fp!=0) fclose(fp);
if(err !=0) printf("Error %d", err);
return err;
} |
J'aimerais donc avoir vos avis sur les 2 et si l'utilisation de goto est utile et si oui dans quel cas.
Merci d'avance.
PS: je sais il y a du C avec du C++, mais ce code n'est pas de moi.