Code Bye

这句函数声明式本人没看明白

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 (*)();

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明这句函数声明式本人没看明白