Open hangingfan opened 6 years ago
由于C#的委托,我又想起了熟悉的回调函数,于是决定写一篇回调函数的定义 1:函数指针: auto pFunc = &Function; 类似于普通的指针,没有任何区别。然后auto只是自动获取,类似于C#的var, 如果变成真实的类型,就是这样: 返回类型(*pFunc)(参数列表) 具体如下面的例子
int FunctionA(int min, int max) { std::cout<< "min:" << min << " max: " << max<<"\n"; return 0; } int main() { int(*pFunc)(int, int); //函数指针的格式, int--返回类型, pFun--名称, 后面的2个int是参数 pFunc = &FunctionA; pFunc(4, 1); auto pFuncA = &FunctionA; pFuncA(4, 1); system("pause"); return 0; }
2: 回调函数 在项目框架里, A模块调用B模块的API,A调用这个API之后,立即就去干其他的事情了,没有等待,需要B处理完之后才去通知A,这个时候,我们需要让B设置一个函数指针,让A传进来,B就可以在处理完之后进行调用,通知A了
int FunctionA(int min, int max) { std::cout << "min:" << min << " max: " << max << "\n"; return 0; } //B模块,第一个参数是回调函数 void TestFuncA(int(*funInside)(int, int), int insideMin, int insideMax) { funInside(insideMin, insideMax); } int main() { TestFuncA(FunctionA, 0, 10);//main相当于A模块,调用B的API之后,funInside就相当于通知A system("pause"); return 0; }
由于C#的委托,我又想起了熟悉的回调函数,于是决定写一篇回调函数的定义 1:函数指针: auto pFunc = &Function; 类似于普通的指针,没有任何区别。然后auto只是自动获取,类似于C#的var, 如果变成真实的类型,就是这样: 返回类型(*pFunc)(参数列表) 具体如下面的例子
2: 回调函数 在项目框架里, A模块调用B模块的API,A调用这个API之后,立即就去干其他的事情了,没有等待,需要B处理完之后才去通知A,这个时候,我们需要让B设置一个函数指针,让A传进来,B就可以在处理完之后进行调用,通知A了