_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);
}