_set_purecall_handler, _set_purecall_handler_m

设置纯虚的处理程序函数调用。

_purecall_handler _set_purecall_handler( 
   _purecall_handler function
);
_purecall_handler _set_purecall_handler_m( 
   _purecall_handler_mfunction
);

参数

  • function
    将调用函数,当一个纯虚函数调用。 _purecall_handler 或 _purecall_handler_m 函数应具有 void 返回类型。

返回值

前面的 _purecall_handler。 ; 如果没有上一个处理程序,返回 NULL 。

备注

,如果要捕捉纯虚函数及其向用户报告用特定方法或捕获它们用于调试目的,请使用 _set_purecall_handler 。

由于有整体的一 _purecall_handler 进程,调用此函数会立即影响所有线程。 所有线程的最后调用方设置处理程序。

具有全部动态链接到的 DLL 或可执行文件的单个 _set_purecall_handler 处理程序;即使您调用 _set_purecall_handler 处理程序可以将另一个替换或所替换可执行一的处理程序设置由另一个 DLL 或。

若要还原默认行为,请调用与NULL 参数的 _set_purecall_handler 。

函数的 _set_purecall_handler_m 版本用于混合模式 CRT。

要求

实例

必需的头

_set_purecall_handler,

_set_purecall_handler_m

stdlib.h

有关更多兼容性信息,请参见中介绍的 兼容性

示例

// _set_purecall_handler.cpp
// compile with: /W1
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>

class CDerived;
class CBase
{
public:
   CBase(CDerived *derived): m_pDerived(derived) {};
   ~CBase();
   virtual void function(void) = 0;

   CDerived * m_pDerived;
};

class CDerived : public CBase
{
public:
   CDerived() : CBase(this) {};   // C4355
   virtual void function(void) {};
};

CBase::~CBase()
{
   m_pDerived -> function();
}

void myPurecallHandler(void)
{
   printf("In _purecall_handler.");
   exit(0);
}

int _tmain(int argc, _TCHAR* argv[])
{
   _set_purecall_handler(myPurecallHandler);
   CDerived myDerived;
}
  

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例

请参见

参考

错误处理(crt)

_purecall