Microsoft C++ 自定义输出纯虚函数调用报错的方法

_purecall是C++编译器在调用未实现的纯虚拟函数时使用的错误处理函数。它会终止程序,但可以通过_set_purecall_handler设置自定义处理程序来捕获和处理这种错误,例如用于调试。用户可以创建符合_purecall_handler签名的函数并使用_set_purecall_handler进行设置。
摘要由CSDN通过智能技术生成

_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);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值