Поделиться через


Использование проверки кода во время выполнения без библиотеки среды выполнения C

Если компоновка осуществляется без библиотеки времени выполнения языка 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.

См. также

Задачи

Практическое руководство. Настройка проверок во время выполнения машинного кода