这个函数定义是什么意思?

时间:2010-10-11 07:36:03

标签: c++ c

This function definition is found here.

static void (*resolve_memcpy (void)) (void)
{
    return my_memcpy; // we'll just always select this routine
}

我不明白这意味着什么。

4 个答案:

答案 0 :(得分:5)

resolve_memcpy是一个不带参数的函数,返回一个不带参数的函数指针,返回void。

编辑:这是一个链接,您可以在其中详细了解此类语法:http://unixwiz.net/techtips/reading-cdecl.html

答案 1 :(得分:3)

这是我阅读毛茸茸声明的标准方法:从最左边的标识符开始,然后解决问题,记住在()之前没有任何明确的分组[]*绑定:

              resolve_memcpy               -- resolve_memcpy
              resolve_memcpy(void)         --  is a function taking no arguments
             *resolve_memcpy(void)         --  and returning a pointer
            (*resolve_memcpy(void)) (void) --   to a function taking no arguments
       void (*resolve_memcpy(void)) (void) --   and returning void
static void (*resolve_memcpy(void)) (void) -- and is not exported to the linker

因此resolve_memcpy函数的返回值是指向另一个函数的指针:

void (*fptr)(void) = resolve_memcpy();
fptr(); // or (*fptr)(), if you want to be explicit

如果你想让你的同事疯狂,你可以写

resolve_memcpy()(); 

将执行由resolve_memcpy返回其指针的函数。

答案 2 :(得分:2)

可以使用cdecl查找:

  

将resolve_memcpy声明为static function(void)返回指向function(void)返回void的指针

答案 3 :(得分:0)

它基本上返回一个函数指针,大概是你应该使用的,而不是memcpy

// memcpy(...)
resolve_memcpy()(...) // Use this instead.