Udostępnij za pośrednictwem


_set_invalid_parameter_handler

Ustawia funkcja wywoływana, gdy CRT wykryje nieprawidłowy argument.

_invalid_parameter_handler _set_invalid_parameter_handler(
   _invalid_parameter_handler pNew
);

Parametry

  • [w]pNew
    Wskaźnik funkcji do obsługi nowych nieprawidłowy parametr.

Wartość zwracana

Wskaźnik do obsługi nieprawidłowy parametr przed wywołaniem.

Uwagi

Wiele funkcji uruchomieniowej c sprawdzenia ważności argumentów przekazanych do nich.Jeżeli nie przekazano nieprawidłowy argument, można ustawić funkcję errno numer błędu lub return kod błędu.W takich przypadkach jest również nazywany obsługi nieprawidłowy parametr.Ta funkcja umożliwia programu obsługi należy ustawić do innej funkcji.Tylko jedna funkcja może być określona jako obsługi nieprawidłowy argument w czasie.

Gdy ramach wywołuje funkcję nieprawidłowy parametr, to zazwyczaj oznacza to, że wystąpił błąd nieodtwarzalnych.Nieprawidłowy parametr funkcji, należy zapisać wszystkie dane, można, a następnie przerwać.To powinno nie zwrócić sterowanie do głównych funkcji, chyba że masz pewność, że błąd jest możliwe do odzyskania.

Nieprawidłowy parametr funkcji obsługi musi mieć następujący prototyp:

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

Pierwszy argument jest argument Wyrażenie.Drugi argument jest nazwą funkcji CRT, który otrzymał nieprawidłowy argument.Trzeci argument jest nazwą pliku w źródle CRT.Czwarty argument jest wiersz w pliku.Ostatni argument jest zarezerwowany.Wszystkie parametry mają wartość NULL , chyba że jest używana wersja programu debug biblioteki CRT.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

_set_invalid_parameter_handler

<stdlib.h>

Informacji dotyczących zgodności, zobacz Zgodność we wprowadzeniu.

Przykład

W poniższym przykładzie obsługa błędów nieprawidłowy parametr służy do drukowania funkcję, która otrzymała nieprawidłowy parametr plików i linii w źródłach CRT.Użyto biblioteki debugowania CRT nieprawidłowy parametr błędy również throw twierdzenia jest wyłączone w tym przykładzie za pomocą _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);
}
  
  

Zobacz też

Informacje

Wersje funkcji CRT zwiększonych zabezpieczeń

errno, _doserrno, _sys_errlist i _sys_nerr