#define perform_action() call("foo", "perform_action")()
Currently the compiler rejects such macros with an error ("empty macro argument"); a typical C preprocessor has no problem with them. I would expect that they be callable like "perform_action()" but NOT like "perform_action".
You would use it like so, in your example:
Makes your macro usable both with and without parentheses.
I feel bad.Edit:
This one doesn't even throw a warning:
#define perform_action call(world, "returns_two")(); try;.;catch