1

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

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

3 回答 3

3
void (*fcn) (void *)

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

于 2013-11-13T03:03:02.440 回答
3

使用“螺旋法则”

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

所以,

  • fcn是一个指向
  • 具有void *作为参数的函数
  • 返回void(无)
于 2013-11-13T03:09:31.687 回答
1

经过几次编辑(删除变量的名称)cdecl给出了答案

将克隆声明为函数(指向函数的指针(指向 void 的指针)返回 void、指向 void 的指针、指向 void 的指针)返回 int

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

于 2013-11-13T03:09:11.370 回答