static void (* __set_malloc_handler(void (*__f)()))();
我认为__set_malloc_handler
是一个函数指针,它指向一个也需要一个函数指针的函数。但是,我不知道如何理解整个陈述。它是如何工作的?
答案 0 :(得分:1)
通过一些别名更容易理解。
//pointer to function taking no arguments and void return
typedef void(*function_pointer)();
//function taking "function_pointer" and returning "function_pointer"
function_pointer __set_malloc_handler(function_pointer __f);
要阅读类似内容,我建议使用right-left rule。这是我一直用的东西。还有一个spiral rule,但是当它没有形成一个完美的螺旋时我感到恼火,而我却太注意力集中注意力了。你可能不会遇到这个问题。
任何一页的解释都比较全面,但这是一个速成课程。
基本上,请将这些符号读作:
*
="指向" (...)
="功能正常...
" [...]
="大小为...
" 向右阅读,直到找到尚未匹配)
的{{1}}为止。然后向左阅读,直到找到匹配它的(
。再次开始阅读。如果您点击右侧的行尾,则完成向左阅读。
标识符(
的右边是一个开放的括号__set_malloc_handler
,这意味着它是一个函数。从那个到匹配的(
的所有内容都是参数类型。我建议首先忽略它并稍后再回来。一步一步:
)
查看参数,我们有:
__set_malloc_handler(...) //function taking ...
(*__set_malloc_handler(...)) //and returning a pointer
(*__set_malloc_handler(...))() //to a function taking no arguments
void (*__set_malloc_handler(...))() //that returns void
答案 1 :(得分:1)
__set_malloc_handler
是一个函数,它接受“函数指针指向void函数”并返回“函数指针指向void函数”。关键字static
使其仅对当前文件可见。