SGI STL中stl_alloc.h中的一个函数
static void (* __malloc_alloc_oom_handler)(); static void (* __set_malloc_handler(void (*__f)()))() //这句函数原型 { void (* __old)() = __malloc_alloc_oom_handler; __malloc_alloc_oom_handler = __f; return(__old); }
求分析的方法和过程,为何返回值是 void (*)()
解决方案
15
typedef void (*FUN_PTR)(); static FUN_PTR __set_malloc_handler(FUN_PTR)
25
指针(函数指针,对象指针)也是一种对象
声明中 去掉 对象名,就是这个声明中声明的对象类型
存储类型,一般是附加的额外信息,
并不是类型信息的一部分。
static void (* __malloc_alloc_oom_handler)();
__malloc_alloc_oom_handler的类型是 void (* )();
static void (* __set_malloc_handler(void (*__f)()))()
参数是 void (*__f)()
参数类型是 void (*)()
函数是 void (* __set_malloc_handler(void (*__f)()))()
函数类型(返回值类型)是 void (*)();
声明中 去掉 对象名,就是这个声明中声明的对象类型
存储类型,一般是附加的额外信息,
并不是类型信息的一部分。
static void (* __malloc_alloc_oom_handler)();
__malloc_alloc_oom_handler的类型是 void (* )();
static void (* __set_malloc_handler(void (*__f)()))()
参数是 void (*__f)()
参数类型是 void (*)()
函数是 void (* __set_malloc_handler(void (*__f)()))()
函数类型(返回值类型)是 void (*)();