C++ 理解这个复杂的声明

C++ 理解这个复杂的声明,c++,C++,我认为\uuuu set\umalloc\uhandler是一个函数指针,它指向一个也需要函数指针的函数。但是,我不知道如何理解整个声明。它是如何工作的?使用一些别名更容易理解 static void (* __set_malloc_handler(void (*__f)()))(); 要阅读类似的内容,我推荐。这是我经常用的。还有一个问题,但当它没有形成一个完美的螺旋时,我会很恼火,我会因为它而分心,无法集中注意力。你可能不会有这个问题 这两页上的解释都更详尽,但这里有一个速成班 基本上,

我认为
\uuuu set\umalloc\uhandler
是一个函数指针,它指向一个也需要函数指针的函数。但是,我不知道如何理解整个声明。它是如何工作的?

使用一些别名更容易理解

static void (* __set_malloc_handler(void (*__f)()))();

要阅读类似的内容,我推荐。这是我经常用的。还有一个问题,但当它没有形成一个完美的螺旋时,我会很恼火,我会因为它而分心,无法集中注意力。你可能不会有这个问题

这两页上的解释都更详尽,但这里有一个速成班

基本上,将这些符号理解为:

  • *
    =“指针指向”
  • (…)
    =“函数获取
  • […]
    =“大小数组
  • 向右读,直到你找到一个不匹配的
    )。然后向左读,直到你找到一个匹配的
    。再次开始向右读。如果你碰到右边那一行的末尾,你就完成了向左读


    标识符
    \u set\u malloc\u handler
    的右边是一个开放的括号
    ,意思是它是一个函数。从它到匹配的
    都是参数类型。我建议先忽略它,然后再返回。一步一步:

    //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);
    
    从参数来看,我们有:

           __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
    

    使用一些别名更容易理解

    static void (* __set_malloc_handler(void (*__f)()))();
    

    要阅读这样的内容,我推荐。这是我经常使用的。还有一个,但当它没有形成一个完美的螺旋时,我会很恼火,我会被它分心而无法集中注意力。你可能不会有这个问题

    这两页上的解释都更详尽,但这里有一个速成班

    基本上,将这些符号理解为:

  • *
    =“指针指向”
  • (…)
    =“函数获取
  • […]
    =“大小数组
  • 向右读,直到你找到一个不匹配的
    )。然后向左读,直到你找到一个匹配的
    。再次开始向右读。如果你碰到右边那一行的末尾,你就完成了向左读


    标识符
    \u set\u malloc\u handler
    的右边是一个开放的括号
    ,意思是它是一个函数。从它到匹配的
    都是参数类型。我建议先忽略它,然后再返回。一步一步:

    //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);
    
    从参数来看,我们有:

           __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
    

    \uuuu set\u malloc\u handler
    是一个函数,它接受“指向无效函数的函数指针”并返回“指向无效函数的函数指针”。关键字
    static
    使其仅对当前文件可见。

    \uu set\u malloc\u handler
    是一个函数,它接受“指向无效函数的函数指针”并返回“指向无效函数的函数指针".Keyword
    static
    使其仅对当前文件可见。

    \uuuu set\u malloc\u处理程序是函数,而不是函数指针。它的参数和返回值是函数指针。或者,您可以在。*+\uu set\u malloc\u处理程序%28void+%28*%29%28%29%29%28%29%3B
    \uu set\u malloc\u处理程序中阅读此页Action,不是函数指针。它的参数和返回值都是函数指针。或者,您可以在。*+\u set\u malloc\u处理程序%28void+%28*%29%28%29%29%29%28%29%29%29%29%3b上阅读此页。非常感谢。我喜欢左右规则,并从中学习了很多。您给了我一条鱼,并教我如何钓鱼。再次感谢您。非常感谢。我喜欢左右规则,从中我学到了很多。你给了我一条鱼,教我如何钓鱼。再次感谢你。