void(*task_func)(void);
时间: 2024-06-13 17:09:06 浏览: 87
C语言实现一个简单的thread_pool.zip
`void(*task_func)(void)`是一个函数指针,它指向一个没有参数和返回值的函数。在引用中,`task_func`是`sched_task_t`结构体中的一个成员,用于存储任务函数的地址。通过调用该函数指针,可以执行相应的任务函数。
以下是一个示例,演示如何使用函数指针来调用任务函数:
```c
#include <stdio.h>
void task_1(void) {
printf("我是任务1\n");
}
void task_2(void) {
printf("我是任务2\n");
}
void task_3(void) {
printf("我是任务3\n");
}
typedef struct {
void(*task_func)(void);
uint16_t rate_hz;
uint16_t interval_ticks;
uint32_t last_run;
} sched_task_t;
int main() {
sched_task_t task_list[3];
// 初始化任务列表
task_list[0].task_func = task_1;
task_list[0].rate_hz = 1;
task_list[0].interval_ticks = 1000;
task_list[0].last_run = 0;
task_list[1].task_func = task_2;
task_list[1].rate_hz = 2; task_list[1].interval_ticks = 500;
task_list[1].last_run = 0;
task_list[2].task_func = task_3;
task_list[2].rate_hz = 4;
task_list[2].interval_ticks = 250;
task_list[2].last_run = 0;
// 执行任务列表中的任务函数
for (int i = 0; i < 3; i++) {
task_list[i].task_func();
}
return 0;
}
```
输出结果为:
```
我是任务1
我是任务2
我是任务3
```
阅读全文