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

时间:2014-06-05 16:14:21

标签: c function typedef bsd

我使用以下构造看到了一些BSD代码:

typedef int driver_filter_t(void*);

这究竟是什么意思?我不认为它是一个函数指针,否则它会像typedef int (*driver_filter_t)(void*),对吧?

2 个答案:

答案 0 :(得分:8)

typedef int driver_filter_t(void*);

这是函数类型的定义。它使driver_filter_t成为可以描述为"类型的别名,其函数返回int,其参数类型为void"

对于所有typedef,它会为现有类型创建别名,而不是新类型。

driver_filter_t 不是指针类型。你不能声明driver_filter_t类型的东西(语法不允许使用typedef名称声明一个函数)。您可以声明一个对象是一个函数指针,例如:

driver_filter_t *func_ptr;

因为您不能直接使用函数类型名称而不添加*来表示指针类型,所以为函数指针类型定义typedef可能更常见,例如:

typedef int (*driver_filter_pointer)(void*);

但函数类型的typedef完全合法,我个人觉得它们更清晰。

答案 1 :(得分:1)

typedef int driver_filter_t(void*);是函数类型的typedef。在C中,您可以将它用于driver_filter_t* fn_ptr等函数指针。

在C ++中,您也可以使用该typedef来声明成员函数(但不能实现它们):

struct Some {
    driver_filter_t foo; // int foo(void*);
    driver_filter_t bar; // int bar(void*);
};