Non tu as raison, c'est bien ce qu'il faut faire : tout appel critique doit faire l'objet d'un traitement d'erreur et quoi qu'il en soit d'une ligne de log (potentiellement désactivable).
En revanche, ta façon de procéder est lourde. Chacun fait un peu comme il veut, mais une maniere plus pratique (àmha) de faire est la suivante :
#define CHECKED_CALL(fct, error_cond, lbl) if ( fct error_cond ) goto lbl
...
CHECKED_CALL( XCopyArea( blabla ), == 0, Err_maFonction) ;
...
Err_maFonction:;
perror("blabla");
close(blabla);
fclose(blabla);
...
Bien sûr ça n'est qu'un exemple, tu peux créer plusieurs macros de contrôle de lignes (notamment pour automatiser les logs).
Voilà ; au passage, c'est la seule et unique façon d'utiliser proprement l'instruction goto.
L'inconvénient de ce système est qu'il devient vite difficile à debugger (à cause des macros) ; il implique donc d'avoir des logs impeccables ...
Have fun !
-------
<br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay
Poste le Monday 18 June 2007 09:06:28