回调函数原理可参考以下博客内容:
①https://www.jianshu.com/p/2f695d6fd64f
②https://zhuanlan.zhihu.com/p/326902537
本文展示一个关于更新值的回调函数:
func.h
//回调声明 用于实时更新value
typedef void(__stdcall * progressCallback)(int* value);
//功能函数
int calculate(int a_in,int b_in,progressCallback progressCB);
func.cpp
int calculate(int a_in,int b_in,progressCallback progressCB)
{
//加法计算
int sum=a_in+b_in;
progressCB(&sum); //更新结果
//减法计算
int diff=a_in-b_in;
progressCB(&diff); //更新结果
//乘法运算
int mul=a_in*b_in;
progressCB(&mul); //更新结果
//除法运算
float div=(float)a_in/(float)b_in;
progressCB(&dif);
return 0;
}
③主函数
#include"func.h"
//用于初始化回调函数
void invoke(int* res)
{
//输出回调实时值
cout<<res[0]<<endl;
}
int main()
{
progressCallback progressCB;
progressCB = invoke;
int a=4,b=2;
//在调用calculate过程中,progressCB中的值是实时更新的
calculate(a,b,progressCB);
return 0;
}
//终端可显示:
6
2
8
2