conseils sur quelques macros
Bonjour, dans mon prgm, j'aimerais faire qq macros. Lorsque je fais un malloc, mon code est le suivan :
Code:
1 2 3 4 5 6 7
|
T * p=malloc(N*sizeof(*p));
if(p==NULL)
{
fprintf(stderr,"%s:%d : Error : malloc() failed\n",__FILE__,__LINE__);
exit(EXIT_FAILURE);
} |
d'où ma macro suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
#define MEMERROR \
do\
{\
fprintf(stderr,"%s:%d : Error : malloc() failed\n",__FILE__,__LINE__);\
exit(EXIT_FAILURE);\
}\
while(0)
T * p=malloc(N*sizeof(*p));
if(p==NULL) MEMERROR; |
Serait-il maintenant possible de faire une macro du genre
où la macro MALLOC fait qqch du genre (mais ça ne marche pas...)
Code:
1 2 3 4 5 6 7 8
|
#define MALLOC(ptr,size)\
do\
{\
malloc(size*sizeof(*ptr));\
ifptr==NULL) MEMERROR;\
}\
while(0) |
Bien sûr ceci ne marche pas...
A propos de free : plutôt que de faire à chaque fois
puis-je faire
Code:
1 2 3 4 5 6 7 8
|
#define FREE(ptr)\
do\
{\
free(ptr);\
ptr=NULL;\
}\
while(0) |
Enfin, à propos du fclose(), puis-je faire, au lieu de
Code:
1 2
|
fclose(pfile); pfile=NULL; |
une macro comme :
Code:
1 2 3 4 5 6 7 8
|
#define FCLOSE(ptr)\
do\
{\
fclose(ptr);\
ptr=NULL;\
}\
while(0) |
Pouvez-vous donc s'il vous plait me conseiller sur ces macros ? Est-il recommandé de faire autant de macros (elles sont courtes donc lisibles) ?
Merci d'avance