欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

回调函数的 C 语言实现 - 二、回调函数的情况

最编程 2024-03-11 19:12:08
...

来直接看代码

#include <stdio.h>
//函数声明  包含函数指针  
void fun_point(int *num, void (*point)(int a), int n);
//函数声明
void add(int a);
int main(void)
{
    int a = 10, b = 20, num;
    //第二个参数传函数指针(函数名就是地址)
    fun_point(&num, add, a);
    
    printf("num:%d\n", num);
    return 0;
}
//回调函数
void add(int a)
{
    printf("a:%d\n", a);
    printf("helloworld\n");
}
//底层
void fun_point(int *num, void (*point)(int a), int n)
{
    *num = 100;
    //在这里如果是有硬件的支持,可以实现调用的条件,如果底层定时多久才调用:  point(n);  底层有中断触发才调用:  point(n);等条件视情况而写的
    point(n);
}

输出

a:10
helloworld
num:100

分析
在这里插入图片描述
关于何时执行回调函数 void add(int a),关键是底层设计何时调用:point(n),不同的硬件或者功能设计不同,调用point(n)可以是底层满足定时器、中断、信号等条件执行。如FreeRTOS中底层Systick计数到时,实现软件定时器的回调函数的执行,linux下捕获到信号,执行回调函数等。

这个是常见的函数指针使用,在函数的参数为函数指针,通过函数里的参数,启动别一个函数,常用的方法是函数指针。你学会了吗

推荐阅读