C语言有时候有这样的应用场景,我们想要在一个结构体的成员中定义一个函数指针的成员,这样这个结构体可以拥有自己的子函数。例如:软件定时器结构体中的超时回调函数,它就是一个结构体成员。
先看看某位大佬写实现以上想法的代码(原文出自:STM32开发项目:软件虚拟定时器的实现
typedef void (*timeout_handler)();
typedef struct
{
uint8_t id;
uint32_t count;
uint32_t expire;
timeout_handler callback;
uint8_t isEnable;
int16_t repeat;
} SoftwareTimerStruct;
基本思路就是首先使用typedef 声明一个函数指针数据类型,然后把这个数据类型作为结构成员的类型就可以了