共用方式為


_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
    純虛擬函式被呼叫時所要呼叫函式。 A _purecall_handler或_purecall_handler_m函式應該有 void 傳回型別。

傳回值

前一個_purecall_handler。 傳回NULL如果有任何先前的處理常式。

備註

使用_set_purecall_handler如果您想要攔截純虛擬函式和特定的方式將它們報告給使用者,或攔截進行偵錯。

因為沒有一個_purecall_handler整個程序中,立即呼叫這個函式會影響所有的執行緒。 上一次的呼叫端在任何執行緒上設定的處理常式。

沒有單一_set_purecall_handler為所有動態連結的 Dll 或可執行檔。 即使您呼叫_set_purecall_handler可能會由另一個取代您的處理常式,或儲存的遊戲替換另一個 DLL 或可執行檔所設定的處理常式。

若要還原預設行為,請呼叫_set_purecall_handler與NULL引數。

_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