【问题标题】:typedef function return value in CC语言中的typedef函数返回值
【发布时间】:2012-02-02 17:16:08
【问题描述】:

请帮助我理解这个 typedef 是做什么的??

typedef void (xyz) (void *data);
extern struct x* FUNCTION(xyz *ptr);

这是我的理解:在第一行 xyz 是一个返回 void 并将 void 指针作为参数的函数。但我不能用这种理解来解释第二行。

任何输入都是可观的。

【问题讨论】:

    标签: c typedef


    【解决方案1】:

    有一个名为FUNCTION 的外部函数,它将指向xyz 函数的指针作为参数并返回指向struct x 的指针。

    【讨论】:

      【解决方案2】:

      第一行将xyz 定义为返回void 并采用void* 类型参数的函数的类型。您实际上可以省略名称 data,因为它什么都不做。

      由于 C 中没有可以直接声明的原始函数类型,因此您只能使用 指针 指向 xyz,就像您确实拥有 xyz * ptr 一样。

      在 typedef 中包含指针更为常见:

      typedef void (*fptr)(void*);
      
      void call(fptr f, void * arg) { f(arg); }
      
      void some_function(void * data); // whatever
      
      int main()
      {
          void * p = malloc(8);
          call(some_function, p);
      }
      

      第二行声明了一个函数,该函数接受xyz* 作为参数并返回指向struct x 的指针,并带有外部链接。

      【讨论】:

      • 这没有回答问题,因为它是关于代码的第二行。
      • @Archie:好的,我添加了对第二行的解释。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多