It would be better to rename the function, and have the macro called MyFree() For extra credit, have the macro pass __FUNCTION__ and __LINE__ to MyFree_2() (or whatever) and add useful diagnostics. Similarly for MyCalloc and MyAlloc. Bonus if the new macros are called malloc() and free() :-)