`

回调函数

    博客分类:
  • C++
阅读更多
当 函数指针 做为函数的参数,传递给一个被调用函数,被调用函数就可以通过这个指针调用外部的函数,这就形成了回调。

windows程序中 WndProc 就是使用回调的典型形式。

一般的程序中回调函数作用不是非常明显,可以不使用这种形式。

最主要的用途就是当函数不处在同一个文件当中,比如动态库,要调用其他程序中的函数就只有采用回调的形式。


#include "stdio.h"
#include "conio.h"

int add(int a, int b);
int libfun(int (*pDis)(int a, int b));

int main(void)
{
int (*pfun)(int a, int b);

pfun = add;
libfun(pfun);

}

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

}

int libfun(int (*pDis)(int a, int b))
{
int a, b;
a = 1;
b = 2;
printf("%d", pDis(a, b));

}

现在这几个函数是在同一个文件当中

假如
int libfun(int (*pDis)(int a, int b))
是一个库中的函数,就只有使用回调了,通过函数指针参数将外部函数地址传入来实现调用

函数 add 的代码作了修改,也不必改动库的代码,就可以正常实现。
分享到:
评论

相关推荐

    使用C语言写的回调函数

    回调函数在C语言中是一种非常重要的编程机制,它允许我们将一个函数的地址作为参数传递给另一个函数,由这个函数在适当的时候调用我们传入的函数。这种模式在处理异步事件、信号处理、排序算法以及其他需要在特定...

    mfc下实现回调函数

    在Microsoft Foundation Classes (MFC) 中,回调函数是一种特殊类型的函数,它允许用户代码与库或操作系统进行交互,尤其是在处理异步事件时。回调函数通常作为参数传递给其他函数,以便在特定事件发生时调用。在MFC...

    c++builder回调函数例子

    在C++ Builder中,回调函数是一种关键的设计模式,用于在动态链接库(DLL)中调用主程序中的特定函数。回调函数允许DLL与主程序进行通信,传递数据或执行特定操作。 首先,让我们理解什么是回调函数。回调函数是...

    PB 回调函数,多线程

    标题中的“PB 回调函数,多线程”指的是在编程中使用ProtoBuf(Protocol Buffers,简称PB)实现回调函数来处理多线程应用程序。ProtoBuf是Google开发的一种数据序列化协议,常用于结构化数据的存储和交换,它可以...

    delphi Dll的回调函数

    在Delphi编程环境中,DLL的使用尤为常见,尤其是涉及到回调函数时。回调函数允许DLL将控制权返回给调用者,使得调用者能够处理特定的事件或任务。本篇文章将深入探讨Delphi中DLL的回调函数及其应用。 首先,我们...

    C# 实现回调函数

    回调函数在编程中是一种强大的设计模式,特别是在C#这样的面向对象语言中,它允许你在方法执行完毕后调用另一个特定的函数。回调函数通常用于异步编程,事件处理或者作为参数传递,使得代码更加灵活和可扩展。接下来...

    C#回调函数示例

    在编程领域,回调函数是一种非常重要的设计模式,它允许我们将一个方法作为参数传递给另一个方法,在特定条件下由被调用的方法执行。在C#中,回调函数同样被广泛使用,尤其是在异步编程、事件处理和自定义算法中。本...

    java 回调函数 实现

    在Java编程中,回调函数是一种设计模式,它允许一个对象在另一个对象执行特定操作后接收通知或进行处理。这种机制通常用于事件驱动编程或者异步编程中,使得代码能够响应某些特定事件的发生。在给定的场景中,我们...

    Android回调函数的例子

    在编程领域,回调函数是一种设计模式,它允许我们定义一个函数,这个函数可以在另一个函数执行完毕后被调用。在Android开发中,回调函数扮演着至关重要的角色,尤其是在处理异步操作、事件监听以及用户交互时。本...

    动态库回调函数示例

    本示例"动态库回调函数示例"旨在演示如何在 VC++6.0 下创建和使用 DLL,特别是在 DLL 中定义回调函数。回调函数是一种编程技术,允许 DLL 将控制权交还给调用它的应用程序,以便在特定事件发生时执行自定义操作。 ...

    C语言中的回调函数实例

    在C语言中一般用typedef来为回调函数定义别名(参数名)。 别名通过宏定义typedef来实现,不是简单的宏替换。可以用作同时声明指针型的多个对象。 比如: 代码如下:char *pa,pb;//pa是一个char型指针,但pb是一个...

    osg回调函数的使用

    【osg回调函数的使用】 OpenSceneGraph(OSG)是一个强大的3D图形库,它提供了丰富的功能来构建复杂的三维场景。在OSG中,回调函数是实现用户自定义行为的关键工具,它们允许开发者在特定事件发生时执行特定的代码...

    VC++ DLL 实现回调函数的实例

    回调函数则是编程中一种常见的设计模式,它允许函数将控制权返回给调用者,使得调用者可以在适当的时候执行特定的处理逻辑。在VC++中,将回调函数实现在DLL中,可以提供更加灵活的跨模块通信方式。 首先,我们需要...

    lwip的回调函数学习笔记与相关函数释疑

    lwip的回调函数学习笔记与相关函数释疑 lwip 是一个轻量级的TCP/IP协议栈,广泛应用于嵌入式系统中。在lwip中,回调函数是一种重要的机制,用于处理网络事件和数据传输。本文将详细介绍lwip的回调函数学习笔记与...

    Delphi中DLL的回调函数使用

    回调函数是DLL中一个特殊的概念,它允许DLL将控制权交还给调用者,让调用者执行特定的代码。这种机制在处理异步操作、事件处理或自定义数据处理时非常有用。本文将深入探讨Delphi中DLL的回调函数的使用及其相关知识...

    C#回调函数

    在C#编程中,回调函数是一种非常重要的设计模式,它允许我们传递一个方法作为参数到另一个方法中,以便在特定事件发生或者特定条件满足时执行。这种机制使得代码具有高度的灵活性和可扩展性,特别是在处理异步操作、...

    BCB线程中调用主界面的回调函数

    网上的回调函数都是API例子,学习函数指针倒是不错,可是很难让初学者立即应用。常见的情况是辅线程完成某事件后需要“通知”主界面,比如常见的进度条——线程中完成一定的进度后即通知主界面显示到一定的刻度。本...

    matlab串口收发及回调函数编程

    在串口通信中,我们可以设置一个回调函数来处理接收到的数据。首先定义一个函数,例如: ```matlab function serialCallback(obj, event) data = obj.InputBuffer; % 在这里处理接收到的数据 end ``` 然后,...

    回调函数被连续执行两次或多次的原因

    ### 回调函数被连续执行两次或多次的原因 在编程领域,回调函数是一种常见的编程模式,它允许将函数作为参数传递给另一个函数,并在适当的时机由后者调用。这种模式非常有用,尤其是在处理异步操作时。然而,在某些...

    C++回调函数.pdf////C++回调函数.pdfC++回调函数.pdf

    ### C++中的回调函数及其应用 #### 回调函数的概念及定义 回调函数是一种特殊的函数,在C++编程中被广泛使用。回调函数的基本思想是将一个函数作为参数传递给另一个函数,然后在适当的时机调用这个传递进来的函数...

Global site tag (gtag.js) - Google Analytics