En mettant des parenthèses dans ta macro, tu évite la boulette:
#ifdef DEBUG
#define MYFREE(ptr) (assert(ptr!=NULL); free(ptr); ptr=NULL)
#else
#define MYFREE(ptr) (free(ptr); ptr=NULL)
#endif
On doit utiliser sans modération les ( ) dans les macros.
[^] # Re: en repassant
Posté par abgech . En réponse au message free() or not free() ?. Évalué à 0.
#ifdef DEBUG
#define MYFREE(ptr) (assert(ptr!=NULL); free(ptr); ptr=NULL)
#else
#define MYFREE(ptr) (free(ptr); ptr=NULL)
#endif
On doit utiliser sans modération les ( ) dans les macros.