_set_invalid_parameter_handler

Устанавливает функцию для вызова, когда CRT обнаруживает недопустимый аргумент.

_invalid_parameter_handler _set_invalid_parameter_handler(
   _invalid_parameter_handler pNew
);

Параметры

  • [входящий] pNew
    Указатель на функцию нового обработчик недопустимого параметра.

Возвращаемое значение

Указатель на обработчик недопустимого параметра до вызова.

Заметки

Многие функции среды выполнения C проверяют допустимость аргументов, передаваемых в них. Если передается недопустимый аргумент, функция может установить номер ошибки errno или вернуть код ошибки. В таких случаях также вызывается обработчик недопустимого параметра. Эта функция позволяет установить этому обработчику другую функцию. Только одну функцию можно указать в качестве обработчика недопустимых аргументов единовременно.

Когда платформа вызывает функцию обработки недопустимого параметра, это обычно означает, что возникла неисправимая ошибка. Функция обработки недопустимого параметра должна сохранить все данные, которые возможно сохранить, и затем прерваться. Она не должна возвращать управление функции main, если вы не уверены, что ошибка исправима.

Функция обработчика недопустимого параметра должна иметь следующий прототип:

void _invalid_parameter(
   const wchar_t * expression,
   const wchar_t * function, 
   const wchar_t * file, 
   unsigned int line,
   uintptr_t pReserved
);

Первый аргумент — выражение аргумента. Второй аргумент — имя функции CRT, которая получила недопустимый аргумент. Третий аргумент — имя файла в источнике CRT. Четвертый аргумент — строка в этом файле. Последний аргумент зарезервирован. Все параметры имеют значение NULL, если не используется отладочная версия библиотеки CRT.

Требования

Подпрограмма

Обязательный заголовок

_set_invalid_parameter_handler

<stdlib.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Пример

В следующем примере обработчик ошибок недопустимого параметра используется для печати функции, которая получила недопустимый параметр и файла и строки в источниках CRT. Если используется отладочная библиотека CRT, ошибки недопустимого параметра также создают утверждение, которое отключено в этом примере с помощью _CrtSetReportMode.

// crt_set_invalid_parameter_handler.c
// compile with: /Zi /MTd
#include <stdio.h>
#include <stdlib.h>
#include <crtdbg.h>  // For _CrtSetReportMode

void myInvalidParameterHandler(const wchar_t* expression,
   const wchar_t* function, 
   const wchar_t* file, 
   unsigned int line, 
   uintptr_t pReserved)
{
   wprintf(L"Invalid parameter detected in function %s."
            L" File: %s Line: %d\n", function, file, line);
   wprintf(L"Expression: %s\n", expression);
   abort();
}


int main( )
{
   char* formatString;

   _invalid_parameter_handler oldHandler, newHandler;
   newHandler = myInvalidParameterHandler;
   oldHandler = _set_invalid_parameter_handler(newHandler);

   // Disable the message box for assertions.
   _CrtSetReportMode(_CRT_ASSERT, 0);

   // Call printf_s with invalid parameters.

   formatString = NULL;
   printf(formatString);
}
       

См. также

Ссылки

Версии функций CRT повышенной безопасности

errno, _doserrno, _sys_errlist, and _sys_nerr