聲明一個返回特定類型函數指針的函數
阿新 • • 發佈:2018-04-03
參數 函數 log post gpo tro ati 一個 表示
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)() )();
聲明一個返回特定類型函數指針的函數