A macro and a function can have the same name. If one wants to disable a macro at some point then she/he must use #undef macroname.
However this can be achieved even without un-defining the macro.
putchar is implemented as macro as well as function.
putchar('M'); will be handled as a macro and (putchar)('F'); will invoke the function
Do it yourself
Write a function and a macro with same name but different body
Now call using (name)(…) & name(…)