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


_set_invalid_parameter_handler

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

_invalid_parameter_handler _set_invalid_parameter_handler(
   _invalid_parameter_handler pNew
);

Параметры

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

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

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

Заметки

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

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

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

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 и _sys_nerr