They are perfectly implementable, but you need to implement them as inlined functions.
That is no different from the C implementation, it is only that C macro's allow for parameters, but in effect they end up as a function anyway.
Also note that C macro's are notoriously unsafe!, no type checking is done.
I think that was one of the reasons to not expand Freepascal's macro capabilities.
Just write the macro as a function.
For a real programmer that is easy. Very easy.