_purecall
原文:https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/reference/purecall?view=vs-2019
该 _purecall 函数是 Microsoft C++ 编译器的特定于 Microsoft 的实现详细信息。 此函数不打算由代码直接调用,并且它没有公共标头声明。 此处记录了它,因为它是 C 运行时库的公共导出。
对纯虚拟函数的调用出错,因为它没有实现。 当调用纯虚拟函数时,编译器生成代码以调用 _purecall 错误处理程序函数。 默认情况下,_purecall 终止此程序。 在 _purecall 函数终止之前,如果已为进程设置了函数 _purecall_handler ,它将调用函数。 可以安装自己的错误处理程序进行纯虚拟函数调用,以捕获这些调用用于调试和报告目的。 若要使用自己的错误处理程序,请创建一个具有 _purecall_handler 签名的函数,然后使用 _set_purecall_handler 使其成为当前处理程序。
_set_purecall_handler
.
void __cdecl pureFunctioncalled()
{
::MessageBox(NULL, _T("Pure virtual function call happened,please check stack trace!"), _T("pure function call"), MB_ICONEXCLAMATION);
}
// 设置自己的纯虚函数成员函数调用错误的处理函数
_set_purecall_handler(pureFunctioncalled);