【问题标题】:c function declaration explanation on argument with type "void(*fcn)(void*)"c函数声明解释类型为“void(*fcn)(void*)”的参数
【发布时间】:2013-11-13 03:00:00
【问题描述】:

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

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

【问题讨论】:

  • 正如你可能从名字猜到的那样,它是一个函数。
  • 啊。所以它是一个指向函数的指针,它的返回类型是void,参数类型是一个指向void的指针?
  • @James:没错。
  • 谢谢大家。你们很快。

标签: c++ c function arguments


【解决方案1】:
void (*fcn) (void *)

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

【讨论】:

    【解决方案2】:

    使用"Spiral Rule"

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

    所以,

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

    【讨论】:

      【解决方案3】:

      经过几次编辑(删除变量名)cdecl 给了answer

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

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

      【讨论】:

        猜你喜欢
        • 2012-10-17
        • 2012-02-19
        • 1970-01-01
        • 2019-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-16
        • 1970-01-01
        相关资源
        最近更新 更多