#include typedef void (*fp)(int); void f(int) { printf("f()\n"); } fp a() { printf("a()\n"); return &f; } int b() { printf("b()\n"); return 0; } int main() { ((fp)(a()))(b()); // (a())->(b()) return 0; } #### b() a() m() #### #include typedef void* (*ctx_fp)(int, void*, void*); void* ctx(int i, void* j = 0, void* k = 0) { printf("%d ", i); return &ctx; } int main() { ((ctx_fp)( ((ctx_fp)( ((ctx_fp)(ctx(1)))( 2,ctx(3),ctx(4) ) ))( 5,ctx(6),0 ) ))( 7,ctx(8),0 ); printf("\n"); return 0; } #### 8 6 4 3 1 2 5 7