Mar*_*tin 4 c bsd typedef function
我使用以下构造看到了一些BSD代码:
typedef int driver_filter_t(void*);
Run Code Online (Sandbox Code Playgroud)
这究竟是什么意思?我不认为它是一个函数指针,因为否则会是这样的typedef int (*driver_filter_t)(void*)
,对吧?
typedef int driver_filter_t(void*);
Run Code Online (Sandbox Code Playgroud)
这是函数类型的定义.它driver_filter_t
为类型创建了一个别名,可以将其描述为" int
使用类型指针的参数返回的函数void
".
对于所有typedef
s,它为现有类型创建别名,而不是新类型.
driver_filter_t
是不指针类型.你不能声明类型的东西driver_filter_t
(语法不允许使用typedef名称声明一个函数).您可以声明一个函数指针对象,例如:
driver_filter_t *func_ptr;
Run Code Online (Sandbox Code Playgroud)
因为您不能直接使用函数类型名称而不添加*
表示指针类型,所以typedef
为函数指针类型定义s 可能更常见,例如:
typedef int (*driver_filter_pointer)(void*);
Run Code Online (Sandbox Code Playgroud)
但函数类型的typedef完全合法,我个人觉得它们更清晰.
归档时间: |
|
查看次数: |
728 次 |
最近记录: |