你如何解释这个“typedef myType_t (*SpecialFunction_t)(void *);”

Posted

技术标签:

【中文标题】你如何解释这个“typedef myType_t (*SpecialFunction_t)(void *);”【英文标题】:How do you interpret this "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 ...? 【参考方案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); 当有这样一个函数的用例时,这更有意义。谢谢

以上是关于你如何解释这个“typedef myType_t (*SpecialFunction_t)(void *);”的主要内容,如果未能解决你的问题,请参考以下文章

谁能解释这个除法算法是如何工作的?

这个 SQL 注入是如何工作的?需要解释

优化反应: 虚拟dom解释

试图解释下ERP

如何向 6 岁的孩子解释何为编程

如何给女朋友解释什么是Linux的五种IO模型?