typedef int function(void*)的含义是什么?

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*),对吧?

Kei*_*son 8

typedef int driver_filter_t(void*);
Run Code Online (Sandbox Code Playgroud)

这是函数类型的定义.它driver_filter_t为类型创建了一个别名,可以将其描述为" int使用类型指针的参数返回的函数void".

对于所有typedefs,它为现有类型创建别名,而不是新类型.

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完全合法,我个人觉得它们更清晰.