ZoyaPatel

C语言函数指针类型定义详解 | typedef 定义回调函数 !

SohaniSharma

## 定义 typedef void (*gf_timer_cbk_t)(void *); 表示一种函数指针类型,指向无返回值、接收 void * 参数的函数。常用于回调机制,如定时器或事件中,可传递任意数据,提高接口灵活性与通用性。理科生网链接地址:https://www.lksr.net/2025/11/c-typedef.html {alertInfo}

由人工编写审核,非AI生成内容,请放心观看!

{getToc} $title={文章目录}

typedef 定义回调函数
typedef 定义回调函数

typedef void (*gf_timer_cbk_t)(void *);

来详细拆解一下这句代码:typedef void (*gf_timer_cbk_t)(void *);

这是一条 typedef 函数指针类型定义语句,用于定义一个新的类型名 gf_timer_cbk_t,它表示一个函数指针。

一步步拆解

typedef

这是 C 语言中的关键字,用于给一个类型起别名,让代码更简洁可读。

void (*gf_timer_cbk_t)(void *)

这是函数指针的写法,读起来有点复杂,我们把它拆成几个部分:

部分说明
void表示这个函数没有返回值
(*gf_timer_cbk_t)表示这是一个函数指针类型,名字叫 gf_timer_cbk_t
(void *)表示这个函数接收一个void * 类型的参数(即任意类型的指针)。

换句话说,gf_timer_cbk_t 表示:

“一个指向函数的指针,这个函数接收一个 void * 类型的参数,并且不返回任何值。”

举个实际例子

我们来看一个示例来帮助理解:

void my_callback(void *data) {
    printf("Callback called with message: %s\\n", (char *)data);
}
gf_timer_cbk_t cb = my_callback;
cb("Hello Timer!");
  • my_callback 是符合 gf_timer_cbk_t 类型的函数:它接收一个 void *,没有返回值。
  • 然后我们把这个函数赋值给变量 cb(它是一个 gf_timer_cbk_t 类型的函数指针)。
  • 调用 cb(...) 就相当于调用 my_callback(...)

为什么用 void *

因为这样可以传递任意类型的数据。常见用法是:

  • 传入一个结构体、字符串、数组等的指针;
  • 然后在回调函数中将 void * 强制转换为正确的类型来使用。

这在定时器或异步事件中非常常见——你设定一个回调函数和它需要的数据,等到时间到了,就把这块数据交给回调函数处理。

总结

typedef void (*gf_timer_cbk_t)(void *);

意思是:定义了一个函数指针类型 gf_timer_cbk_t,它可以指向任何接受一个 void *  参数、返回值为 void *  的函数。

这种写法常用于定时器、线程、事件循环中,给“回调函数”做统一类型定义,使得 API 更整洁、更灵活。

版权声明:感谢您的阅读,资源整理自网络,如果您发现任何侵权行为,请联系 理科生网 管理人员,管理员将及时删除侵权内容。否则均为 理科生网 原创内容,转载时请务必以超链接(而非纯文本链接)标注来源于理科生网及本文完整链接,感谢!{alertInfo}
Ahmedabad
Kolkata
Hyderabad
后一页 Bangalore 前一页

Random Manga

Ads

نموذج الاتصال