【问题标题】:How do you interpret this "typedef myType_t (*SpecialFunction_t)( void * );"你如何解释这个“typedef myType_t (*SpecialFunction_t)(void *);”
【发布时间】:2015-05-16 19:40:21
【问题描述】:

我知道 myType_t 是一个类似于 char 或 uint32 等的类型, 令人困惑的是它在特殊函数前面有一个指针。

类似于 int* SpecialFunction,因此您可以传递对这个新变量 SpecialFunction 的引用。

后面的 (void *) 是什么,为什么 (*SpecialFunction) 和 (void *) 在单独的括号中。

【问题讨论】:

  • 添加语言标签,C or C++ or ...?

标签: pointers typedef void


【解决方案1】:

这是一个指向函数的指针。

那个 typedef 可以写成: SpecialFunction_t func;

并让编译器将其解释为: myType_t (*func) (void *);

【讨论】:

  • myType_t (*func) (void *) 所以 myType_t 是类型定义 *SpecialFunction_t 是指向函数的指针,void * 是另一个类型为 void 的指针
  • 请阅读函数指针。在这种情况下,您可以像这样定义一个函数fmyType_t f(void *ptr) { return (myType_t)0; },像这样引用它:SpecialFunction_t func = f;,然后像这样取消引用并调用原始函数:myType_t result = func(NULL);
  • 当有这样一个函数的用例时,这更有意义。谢谢
猜你喜欢
  • 2017-01-03
  • 2020-02-07
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 2022-06-15
相关资源
最近更新 更多