不使用 C 語言執行階段程式庫進行執行階段檢查
這個主題適用於:
版本 |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
僅適用原生 |
||||
Pro、Premium 和 Ultimate |
僅適用原生 |
如果連結的程式並未包含 C 語言執行階段程式庫 (使用 /NODEFAULTLIB),但您想使用執行階段檢查,就必須連結 RunTmChk.lib。
_RTC_Initialize 將為執行階段檢查初始化您的程式。 如果沒有連結 C 語言執行階段程式庫,您就必須在呼叫 _RTC_Initialize 之前,檢查程式是否由執行階段錯誤檢查進行編譯,如下所示:
#ifdef __MSVC_RUNTIME_CHECKS
_RTC_Initialize();
#endif
如果沒有連結 C 語言執行階段程式庫,您也必須定義名為 _CRT_RTC_INITW 的函式。 _CRT_RTC_INITW 會將您的使用者定義函式安裝成預設的錯誤報告函式,如下所示:
// C version:
_RTC_error_fnW __cdecl _CRT_RTC_INITW(
void *res0, void **res1, int res2, int res3, int res4)
{
// set the error handler.
return &MyErrorFunc;
}
// C++ version:
extern "C" _RTC_error_fnW __cdecl _CRT_RTC_INITW(
void *res0, void **res1, int res2, int res3, int res4)
{
// set the error handler:
return &MyErrorFunc;
}
您可以在安裝好預設錯誤報告函式之後,使用 _RTC_SetErrorFuncW 安裝其他錯誤報告函式。 如需詳細資訊,請參閱 _RTC_SetErrorFuncW。