你如何解释这个“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 的指针
请阅读函数指针。在这种情况下,您可以像这样定义一个函数f
:myType_t f(void *ptr) return (myType_t)0;
,像这样引用它:SpecialFunction_t func = f;
,然后像这样取消引用并调用原始函数:myType_t result = func(NULL);
。
当有这样一个函数的用例时,这更有意义。谢谢以上是关于你如何解释这个“typedef myType_t (*SpecialFunction_t)(void *);”的主要内容,如果未能解决你的问题,请参考以下文章