• Linux下C语言实现回调函数的例子


      先理解call和callback

      通常我们写程序,是主动去调厂商或者其他人提供的API,这就是普通的API调用,翻译过来就是 call(我们主动)

      那么如果是我们实现了函数的功能,但是需要厂商或者其他人来触发怎么办(我们被动)?比如检测设备状态变化,最好是有变化立即告诉我们才好,这时候回调函数就很理想了,返回过来就是callback

      一个callback回调的例子

     1 //回调函数的定义和实现
     2 #include <stdio.h>
     3 
     4 //函数只针对额格式为int(*CallBackFun)(char *p),即:返回值(指针名)(参数列表)
     5 //为回调函数命名,类型命名为CallBackFun,参数为char *p
     6 typedef int(*CallBackFun)(char *p);
     7 
     8 //方法A,格式符合CallBackFun的格式,因此可以看做是一个CallBackFun
     9 int A(char *p)
    10 {
    11         printf("-------A 回调打印传入参数 
    -------begin print:%s
    ",p);
    12         return 0;
    13 }
     1 回调函数的调用和执行
     2 #include "callback2.c"
     3 
     4 //执行回调函数的函数
     5 int call(char *p, int(*ptr)(char*))     //或者int call(char *p,int(*ptr)())
     6 {
     7         (*ptr)(p);
     8         return 0;
     9 }
    10 
    11 //main 函数
    12 int main()
    13 {
    14         char *p = "回调函数,请打印字符 lllll";
    15         //call(p,A);            //通过执行函数,调用回调函数
    16         //(*A)(p);              //也可以直接通过函数指针调用回调函数,不经过执行函数,简单高效
    17         A(p);           //这里就更简单了,直接调用回调函数,连函数指针都省了
    18 
    19         return 0;
    20 }
  • 相关阅读:
    Flume配置
    HDU5312 Sequence
    CF(D. Fibonacci Sums)dp计数
    【算法拾遗】二分查找递归非递归实现
    ubuntu下怎么给普通用户赋予sudo权限
    在Oracle 11.2.0.1.0下dbms_stats.gather_table_stats收集直方图不准
    ZOJ3622 Magic Number(水题)
    小试ImageMagik——开发篇
    一起talk C栗子吧(第二十七回:C语言实例--插入排序)
    依据输入的内容打印出菱形
  • 原文地址:https://www.cnblogs.com/jieliujas/p/12202025.html
Copyright © 2020-2023  润新知