Chinaunix

标题: 一个不懂的c定义语句,请看 [打印本页]

作者: swear77    时间: 2008-02-15 11:46
标题: 一个不懂的c定义语句,请看
typedef void *(*vm_shutdown_t)(vm_instance_t *vm, void *data);
这句话是什么意思?定义了什么类型?
请赐教。
作者: new_learner    时间: 2008-02-15 12:03
返回void* ,参数类型为vm_instance_t* 和 void* 的函数指针
作者: cugb_cat    时间: 2008-02-15 12:23
函数指针类型。
作者: zaszas    时间: 2008-02-15 12:32
typedef void *(*vm_shutdown_t)(vm_instance_t *vm, void *data);
如2,3楼所说,就是一个函数指针:
具体来讲,就是定义了这么一种类型,指向函数的指针类型,这种函数具有如下特点,它有两个参数,参数的类型分别是vm_instance_t *,void *,另外,这种函数的返回值是void *,,,



可以看下这个简单一点的例子:
typedef int (*FUN)(int a);
这就是一个定义了返回值为int类型的,拥有一个int类型的,函数类型。

可以参考精华贴中的一篇名为‘右左法则’的介绍,,,,

[ 本帖最后由 zaszas 于 2008-2-15 12:33 编辑 ]
作者: cugb_cat    时间: 2008-02-15 12:34
原帖由 zaszas 于 2008-2-15 12:32 发表
typedef void *(*vm_shutdown_t)(vm_instance_t *vm, void *data);
如2,3楼所说,就是一个函数指针:
具体来讲,就是定义了这么一种类型,指向函数的指针类型,这种函数具有如下特点,它有两个参数,参数的类 ...

还是直接去看《C专家编程》吧,第三章有很详细的介绍。
作者: langue    时间: 2008-02-15 12:40
K&R 上面也有详细说明
作者: swear77    时间: 2008-02-15 14:23
谢谢各位的指点,增长见识了!
作者: net_robber    时间: 2008-02-15 17:40
以前有个类似的讨论signal()函数的参数的,楼主可以参考下,也算是个比较复杂的typedef




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2