Bonjour, dans mon prgm, j'aimerais faire qq macros. Lorsque je fais un malloc, mon code est le suivan :
d'où ma macro suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Serait-il maintenant possible de faire une macro du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
où la macro MALLOC fait qqch du genre (mais ça ne marche pas...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 T * p=MALLOC(p,N);
Bien sûr ceci ne marche pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #define MALLOC(ptr,size)\ do\ {\ malloc(size*sizeof(*ptr));\ ifptr==NULL) MEMERROR;\ }\ while(0)
A propos de free : plutôt que de faire à chaque fois
puis-je faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 free(p); p=NULL;
Enfin, à propos du fclose(), puis-je faire, au lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #define FREE(ptr)\ do\ {\ free(ptr);\ ptr=NULL;\ }\ while(0)
une macro comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 fclose(pfile); pfile=NULL;
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) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #define FCLOSE(ptr)\ do\ {\ fclose(ptr);\ ptr=NULL;\ }\ while(0)
Merci d'avance
Partager