typedef __code (CS)(__rectype*); // CS *p //typedef __code (*CS)(__code(*p)()); //typedef __code (CS)(__code(*p)()); // CS *p #include __code cs_end(CS *p) { printf("end\n"); } __code cs(CS *p) { CS *b; goto p(b); // goto p("aaa"); //note: expected ‘void (*)’ but argument is of type ‘char } int main() { CS *p; p = cs_end; goto cs(p); return 0; }