static void (* __set_malloc_handler(void (*__f)()))() { void (* __old)() = __malloc_alloc_oom_handler; __malloc_alloc_oom_handler = __f; return(__old); }
理解步骤:
一: void(*func)();
f是一个函数指针,指向的函数类型就是 void (*func)()
或者说是 void f() 总之 func指向一个无参数的函数
二: __set_malloc_handler( void (*__f)() ) 这是一个整体;
这个整体如果替换掉上部分的func 就变成了:
void (* __set_malloc_handler(void (*__f)()))();
三: 因此 __set_malloc_handler( void (*__f)() ) 这个东西在
void (* __set_malloc_handler(void (*__f)()))();中表示一个函数指针,
并且这个指针指向一个无参数函数。
也就是这个东西__set_malloc_handler( void (*__f)() ) 的返回值是一个函数指针
四:换种写法:
void(*ptrType)();
ptrType __set_malloc_handler( void (*__f)() )();