@interface MyClass +(void)meth; @end #define MACRO2(x) x #define MACRO(x) MACRO2(x) void test() { MACRO([MyClass meth]); } #define INVOKE(METHOD, CLASS) [CLASS METHOD] void test2() { INVOKE(meth, MyClass); }