我看到一些使用以下结构的 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;
因为如果不添加 *
就不能直接使用函数类型名称表示指针类型,定义 typedef
可能更常见s 表示函数指针类型,例如:
typedef int (*driver_filter_pointer)(void*);
但是函数类型的 typedef 是完全合法的,我个人觉得它们更清晰。
关于c - typedef int function(void*) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24065191/