Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 回调函数在C++?_C++_C_Visual C++_Callback_Asynccallback - Fatal编程技术网

C++ 回调函数在C++?

C++ 回调函数在C++?,c++,c,visual-c++,callback,asynccallback,C++,C,Visual C++,Callback,Asynccallback,嗨,我很想知道回调函数的用法。 请任何人用一个简单的例子解释一下 在我的项目中,我观察到一个特定的回调函数突然被某个指示为User.dll的函数调用!调用堆栈中的546383c() 我真的很困惑是谁在打电话,什么时候发生的 调用堆栈看起来很好,直到某一点(即函数a()调用B()调用C()等等),突然发生了一些事情,User.dll中的某个函数调用了此调用。因此,我对函数的跟踪比较松散 谁能举个例子解释一下吗。提前谢谢 嗨,我很想知道回调函数的用法。请任何人用一个简单的例子解释一下 关于这件事没什

嗨,我很想知道回调函数的用法。 请任何人用一个简单的例子解释一下

在我的项目中,我观察到一个特定的回调函数突然被某个指示为User.dll的函数调用!调用堆栈中的546383c()

我真的很困惑是谁在打电话,什么时候发生的

调用堆栈看起来很好,直到某一点(即函数a()调用B()调用C()等等),突然发生了一些事情,User.dll中的某个函数调用了此调用。因此,我对函数的跟踪比较松散

谁能举个例子解释一下吗。提前谢谢

嗨,我很想知道回调函数的用法。请任何人用一个简单的例子解释一下

关于这件事没什么好说的。回调是一些库或系统代码让客户机/应用程序代码处理事件的机制。例如,您可能有一个与以下内容相关的回调:

  • 某些计时器/警报到期
  • I/O事件,例如从文件、网络、键盘/控制台等读取或写入的完成,甚至程序读取或写入能力的改变(基于缓冲区大小限制),或新的/丢失的连接
  • 完成某些异步处理(例如,另一个线程执行某些计算)
  • 某些异步处理中出现意外错误
  • 在某个进程处于特定状态时指导该进程的机会(例如,决定是否接受某个特定的客户端,在此之后调用方将断开连接或开始一些异步客户端处理)
为什么user.dll会给你一个回调-谁知道呢?你还没有告诉我们你的计划或它在做什么


在逻辑级别上,回调可能不会在线程中实际调度,直到您的线程检查(甚至可能阻止等待)已排队的消息,或者回调可能会中断线程正在执行的任何操作以执行一些单独的处理。当事件由C++程序的其他部分创建时,后者是常见的,后者通常用于操作系统和硬件回调(例如Linux/UNIX上的一个“信号”)。简单地说,回调就像函数指针,用来配置一个函数来报告(调用)应用程序中的另一个函数。 例如,使用这种方法,可以处理诸如按钮单击、鼠标移动、菜单选择以及内存中两个实体之间的常规双向通信等事件

因此,触发回调的可能是用户输入或引发的任何其他通信事件。

“user.dll!546383c()”-您应该掌握系统的调试符号。获取模块窗口,然后右键单击User32和“加载符号”;您可能需要设置Microsoft Symbol服务器,但它应该下载它们。然后,它将向您显示User32中函数的名称,这将使这一点更加明显。