c - typedef int function(void*) 是什么意思?

标签 c function typedef bsd

我看到一些使用以下结构的 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/

相关文章:

javascript - 如何使用参数为变量的函数?

objective-c - 在 Swift 中使用 Objective-C typedef void

c++ - 模板内模板的typedef

c - IAR EWARM PC-LINT 禁止来自包含 -header 选项的 header 的消息

c - 打开文本文件并在 C 中搜索字符串后无输出

mysql - 通过 MySQL 存储过程和函数更新 180k 行太慢 - 如何加快速度

c++ - float 类型 创建对象 C++ 后丢失的缓冲区内容

c - 存储和消除垃圾值

c - 如何坚持 C 编译器将局部变量放在堆栈上,而不是寄存器中

javascript - 我们需要包含 javascript 方法的返回类型吗