回调函数

这篇具有很好参考价值的文章主要介绍了回调函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前导师让写一个拼帧回调函数,里面需要用到一个函数作为参数,当时直接把声明传了进去,结果报错。然后就详细了解了一些关于回调函数的知识。

回调函数本质就在于一个函数作为另一个函数的参数。这样可以将一个函数实现的方法直接在另一个函数中调用。回调函数需要先声明后定义,然后将定义后的函数作为参数传入。

下面有具体的实例:

typedef int(*callback)(int, int);

int add (int a, int b)
{
    return a + b;
}

int add(int a, int b, callback p)
{
    return (*callback)(a, b);
}

int main()
{
    add(1, 2, add);
    return 0;
}
void printHello(int num)
{
    cout << "Hello" << num << endl;
}

void printWords(int num, void(*print)(int))
{
    for (int i = 0; i < num; i++)
    {
        (*print)(num);
    }
}

int main()
{
    printWords(5, printHello);
}
// printNumber(x) outputs "x", where x is an integer.
    void zero(function<void(int)> printNumber) {
        
    }

回调函数的作用:

  • 回调函数类似于一个管道
  • 它从最初始的函数中源源不断取出数据
  • 函数可以作为一个指针作为参数传入到另一个函数中

今日我遇到了一个问题,我在主函数中调用了一个回调函数,中间函数中输出一个字符串,但奇怪的是主函数运行正常,中间函数内的语句却并未被实现。导师的讲解是,中间函数类似于管道,主函数通过管道获取数据,如果数源不存在,那么中间函数(回调函数)就不会被调用。

具体解释看https://blog.csdn.net/yilovexing/article/details/93192484?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162090168416780274171121%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162090168416780274171121&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-1-93192484.pc_search_result_hbase_insert&utm_term=%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0

结合回调函数的流程

  1. 主函数需要调用回调函数

  2. 中间函数登记回调函数

  3. 触发回调函数事件

  4. 调用回调函数

  5. 响应回调事件

问题应该处在没有发生触发回调函数的事件。我所做的业务是从文件中读取ts流,然后通过拼帧前回调函数将16进制ts流放入到另一个文件,这里没有回调成功是因为没有收到流。即没有从文件中提取出ts流。

这种方法在音视频领域中被用来定位黑屏等问题,黑屏的定位方法文章来源地址https://www.toymoban.com/news/detail-413536.html

  • 收流:收流后调用拼帧前回调函数,如果调用不成功则说明没有输入的媒体流
  • 拼帧:调用拼帧后回调函数,如果调用不成功,则说明是拼帧过程出了问题
  • 解码:调用解码后回调函数,如果调用不成功,则说明解码不成功
  • 若以上三个步骤均没有产生错误,则说明播放器出了问题,可能是驱动坏了

到了这里,关于回调函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 理解函数指针和回调函数

    指向函数的指针。比如: 理解函数指针的伪代码 比如,B把自己函数cbkFunc()的地址告诉A,A在运行过程中执行cbkFunc()。则 回调函数:指B的函数cbkFunc(); 注册回调函数:指B把函数cbkFunc()的地址告诉A; 回调:指A在运行过程中执行cbkFunc()。 无头文件.h 为了方便模块A和B写在了一

    2023年04月20日
    浏览(42)
  • 函数指针和回调函数 以及指针函数

    函数指针(Function Pointer): 定义: 函数指针是指向函数的指针,它存储了函数的地址。函数的二制制代码存放在内存四区中的代码段,函数的地址它在内存中的开始地址。如果把函数的地址作为参数,就可以在函数中灵活的调用其它函数。 用途: 函数指针可以用来在运行

    2024年01月21日
    浏览(61)
  • C++中的回调函数

    C++中的回调函数是指将一个 函数作为参数 传递 给另一个函数 ,并在另一个函数中 调用 该函数。 这种技术被称为函数指针或函数对象。 回调函数通常用于 异步编程 中,例如事件处理程序、GUI编程、网络编程等。 在这些情况下,程序需要在某个事件发生时执行某些操作,

    2024年02月06日
    浏览(46)
  • C# 中的回调函数

    引言 回调函数是一种在编程中常用的概念,它在 C# 中扮演着重要的角色。本文将介绍回调函数的概念、语法和应用,并讨论如何设计优化和重用回调函数,以及它们在并发编程中的用途。 回调函数是指将一个函数作为参数传递给另一个函数,并在被调用函数执行完毕后,再

    2024年02月20日
    浏览(37)
  • JS回调函数(callback)

    在使用Jquery的时候,用到Callback(),回调函数的概念。并且不少。javascript 好比:html 回调函数你们都会用,只是Jquery封装了以后,不能让你们明白回调函数的真正使用。 JS Api 里这样解释:A callback is a function that is passed as an argument to another function and is executed after its parent funct

    2024年02月09日
    浏览(39)
  • 回调函数

    之前导师让写一个拼帧回调函数,里面需要用到一个函数作为参数,当时直接把声明传了进去,结果报错。然后就详细了解了一些关于回调函数的知识。 回调函数本质就在于一个函数作为另一个函数的参数。这样可以将一个函数实现的方法直接在另一个函数中调用。回调函数

    2023年04月15日
    浏览(14)
  • 回调函数的简单用例

    ①用MsgInterface_t定义一个结构体s_Lin_MsgInterface,包含两个回调函数成员: ②确定结构体下的回调函数成员的参数: ③传入实参,确定结构体下的回调函数成员的函数名: ④最终回调函数执行的对应函数如下:

    2024年02月14日
    浏览(36)
  • 小程序-回调函数

    在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。 当需要使用回调函数时,需要预先定义一个函数体。而回调函数通常只是提供

    2024年02月02日
    浏览(34)
  • C#回调函数学习1

    回调函数(Callback Function)是一种函数指针,它指向的是由用户自己定义的回调函数。我们将这个回调函数的指针作为参数传递给另外一个函数,在这个函数工作完成后,它将通过这个回调函数的指针来回调通知调用者处理结果。     此定义来自网上; 看一个例子;这是用委

    2024年02月08日
    浏览(35)
  • python回调函数

    回调函数在各种编程函数中都是比较常见的,回调函数的出现主要是为了降低函数之间调用的耦合性,从而实现解耦。 简单来说,如果一个函数可以作为被传递就称这个函数为回调函数。 比如:func1(func2()),那么func2就是回调函数。此时,只需要知道func2这个函数的功能是什

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包