_set_invalid_parameter_handler
Nastaví funkce volané CRT zjistí neplatný argument.
_invalid_parameter_handler _set_invalid_parameter_handler(
_invalid_parameter_handler pNew
);
Parametry
- [v]pNew
Ukazatel funkce nové obsluze neplatný parametr.
Vrácená hodnota
Ukazatel na neplatný parametr popisovače před volání.
Poznámky
Mnoho funkcí C Runtime zkontrolovat platnost jim předaných argumentů.Pokud je předán neplatný argument, můžete nastavit funkce errno číslo chyby nebo vrátit kód chyby.V takových případech se také nazývá popisovač neplatný parametr.Tato funkce umožňuje tuto obslužnou nastavit jinou funkci.Jako popisovač neplatný argument lze určit pouze jednu funkci najednou.
Pokud rámci zavolá funkci neplatný parametr, obvykle to znamená, že došlo k chybě ztráta neobnovitelných.Neplatný parametr funkce Uložit všechna data můžete a potom přerušit.Ovládací prvek je není vrátit na hlavní funkci, pokud si nejste jisti, že chyba je obnovitelné.
Funkci zpracování neplatný parametr musí mít následující prototypu:
void _invalid_parameter(
const wchar_t * expression,
const wchar_t * function,
const wchar_t * file,
unsigned int line,
uintptr_t pReserved
);
První argument je argument výraz.Druhý argument je název funkce CRT, která obdržela neplatný argument.Třetí argument je název souboru zdroje CRT.Čtvrtý argument není řádek v souboru.Poslední argument je vyhrazena.Všechny parametry mají hodnotu NULL Pokud není použit ladicí verzi knihovny CRT.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_set_invalid_parameter_handler |
<stdlib.h> |
Další informace o kompatibilitě v tématu Kompatibilita v úvodu.
Příklad
V následujícím příkladu je obslužná rutina chyb neplatný parametr pro tisk funkce, která obdržela neplatný parametr a souborů a řádek ve zdrojích CRT.Při ladění CRT knihovny je neplatný parametr chyby také vyvoláním vyhodnocení výrazu, který je zakázán v tomto příkladu 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);
}