Bonjour,
Pour des soucis pratique j'ai écris des fonctions retournant une structure comme celle-ci:
Cela me permet de transporter le code d'erreur et son libellé d'appellant en appellant (genre Exception en Java).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
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![]()
Partager