_set_purecall_handler

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

_purecall_handler _set_purecall_handler(     _purecall_handler function );

参数

  • function
    要在调用纯虚函数时调用的函数。 _purecall_handler 函数必须具有 void 返回类型。

返回值

之前的 _purecall_handler。 如果之前的处理程序不存在,则返回 NULL。

备注

如果你希望捕获纯虚函数并以特定方式将它们报告给用户,或出于调试目的捕获它们,请使用 _set_purecall_handler。

因为在整个过程中存在一个 _purecall_handler,因此立即调用此函数会影响所有线程。 任一线程上的最后一个调用方将设置该处理程序。

存在适用于所有动态链接的 DLL 或可执行文件的单个 _set_purecall_handler 处理程序;即使你调用 _set_purecall_handler,你的处理程序也可能会替换为另一个处理程序,或者你也要使用另一个 DLL 或可执行文件替换处理程序集。

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

要求

例程

必需的标头

_set_purecall_handler

<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