c对类型为“void(* fcn)(void *)”的参数的函数声明解释

时间:2013-11-13 03:00:00

标签: c++ c function arguments

我遇到以下行作为C函数声明。我对传入的第一个参数的类型感到困惑。任何人都可以解释如何理解第一个参数的类型吗?

int clone(void (*fcn) (void *) , void *arg, void *stack)

3 个答案:

答案 0 :(得分:3)

void (*fcn) (void *)

从里到外读取类型:fcn是指向函数的指针,该函数采用void *参数并且不返回任何内容(void)。

答案 1 :(得分:3)

使用"Spiral Rule"

      +------+
      | +--+ |
      | ^  | |
void (*fcn ) (void *)
  ^   ^    | |
  |   +----+ |
  +----------+

所以,

  • fcn是指向
  • 的指针
  • void *为参数的函数
  • 返回void(无)

答案 2 :(得分:1)

经过一些编辑(删除变量名称)cdecl给了answer

  

将clone声明为函数(指向函数的指针(指向void的指针)返回void,指向void的指针,指向void的指针)返回int

或者,你可以只测试第一个参数并得到它的类型:指向void函数的指针,返回void。