typedef void ( *VFUNC)(void);

2019-08-14 02:16发布

typedef void ( *VFUNC)(void);

想问一下这个函数指针的类型宏定义要怎么解释呀。为什么会这样写void 和( *VFUNC)(void)之间有空格怎么理解??求大神详解。。。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
aseeman
1楼-- · 2019-08-14 04:04
函数指针是指向函数的指针变量,他的本质是一个指针变量
void (*VFUNC)(void); 是定义一个函数指针
typedef void (*VFUNC)(void); 是类型定义一个函数指针,这样的写法虽然很难看,但是C的标准就是这样的
这样的好处是你可以通过指针传递,让一个句代码可以执行不同的函数。

[mw_shl_code=c,true]typedef void (*VFUNC)(void);
void myfun(void);
VFUNC fun=myfun;
fun();[/mw_shl_code]

Acuity
2楼-- · 2019-08-14 08:39
1、typedef是声明一个新类型或者说一个类型别名,如typedef int byte_32;byte_32 即表示int类型;
2、void ( *VFUNC)(void);表示一个函数指针,该指针指向一个函数,该函数参数为空(void),无返回类型;加上typedef即声明一个函数指针类型“VFUNC”,这样就可以用“VFUNC”定义函数指针;如VFUNC fun0;函数指针也是指针,必须指向函数实体才能使用,函数实体必须与函数指针的参数一致,包括函数参数、返回值等;
3、函数指针也是C语言的重难点,在操作系统上会经常遇到。
周亚龙
3楼-- · 2019-08-14 11:29
 精彩回答 2  元偷偷看……
周亚龙
4楼-- · 2019-08-14 12:51
aseeman 发表于 2017-9-9 19:41
函数指针是指向函数的指针变量,他的本质是一个指针变量
void (*VFUNC)(void); 是定义一个函数指针
typed ...


是的是的,一开始我是把它当成一个类型宏定义来看,怎么看怎么别扭