_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。 如需詳細資訊,請參閱平台叫用範例。