我看到了一些使用以下结构的BSD代码:
typedef int driver_filter_t(void*);
到底是什么意思?我不认为这是一个函数指针,因为否则它将是,类似typedef int (*driver_filter_t)(void*)
吗?
typedef int driver_filter_t(void*);
这是函数类型的定义。它driver_filter_t
为该类型提供了别名,该别名可以描述为“函数返回int
类型为指针的参数void
”。
对于所有typedef
s,它为现有类型创建别名,而不是新类型。
driver_filter_t
是不指针类型。您不能声明某种类型的内容driver_filter_t
(语法不允许使用typedef名称声明函数)。您可以将对象声明为函数指针,例如:
driver_filter_t *func_ptr;
由于不能在不添加a*
来表示指针类型的情况下直接使用函数类型名称,因此typedef
为函数指针类型定义s可能更常见,例如:
typedef int (*driver_filter_pointer)(void*);
但是函数类型的typedef完全合法,我个人认为它们更清晰。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句