Bonjour,
Pour des soucis pratique j'ai écris des fonctions retournant une structure comme celle-ci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| typedef struct {
int code;
char label[RET_LABEL_SIZE+1];
} RET_Value;
RET_Value IN_WaitForFile(xxx) {
RET_Value ret;
.....
ret.code = -1;
strcpy(ret.label, "Cause de l'erreur");
return ret;
}
main() {
RET_Value ret;
...
ret = RET_Value IN_WaitForFile(xxx);
if(ret.code == -1) {
printf("Erreur: %s\n", ret.label);
}
} |
Cela me permet de transporter le code d'erreur et son libellé d'appellant en appellant (genre Exception en Java).
On (un collègue) m'a dis que c'était une grave erreur car l'espace mémoire pour la valeur retournée n'est alloué que dans la fonction
IN_WaitForFile et peut être écrasé avant son utilisation dans le
main.
Est-ce vrai ?
PS: je sais que c'est pas super propre, ni super efficace :aie: