¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

_set_invalid_parameter_handler

Establece una función que se va a CRT detecta un argumento no válido.

_invalid_parameter_handler _set_invalid_parameter_handler(
   _invalid_parameter_handler pNew
);

[in] pNew

El puntero a función al nuevo controlador no válido del parámetro.

Un puntero al controlador no válido de parámetro antes de la llamada.

Muchas funciones de c En tiempo de ejecución comprueba la validez de los argumentos pasados a ellos. Si se pasa un argumento no válido, la función puede establecer el número de error de errno o devolver un código de error. En estos casos, el controlador no válido de parámetro también. Esta función permite establecer a ese controlador a otra función. Sólo una función se puede especificar como el controlador no válido del argumento al mismo tiempo.

Cuando el marco de trabajo llama a la función no válida de parámetro, generalmente significa que un error nonrecoverable. La función no válida del parámetro debe guardar los datos que pueda a continuación null. No debe devolver el control a la función principal a menos que esté seguro de que el error es recuperable.

La función no válida del controlador de parámetros debe tener el siguiente prototipo:

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

El primer argumento es la expresión del argumento. El segundo argumento es el nombre de la función CRT que recibió el argumento no válido. El tercer argumento es el nombre de archivo en el origen de CRT. El cuarto argumento es la línea de ese archivo. Se reserva el último argumento. Los parámetros todos tienen el valor NULL a menos que una versión de depuración de la biblioteca CRT se utilice.

Rutina

Encabezado necesario

_set_invalid_parameter_handler

<stdlib.h>

Para obtener más información sobre compatibilidad, vea Compatibilidad en la introducción.

En el ejemplo siguiente, se utiliza un controlador de errores no válido de parámetro para imprimir la función que recibió el parámetro no válido y el archivo y la línea en los orígenes de CRT. Cuando se utiliza la biblioteca CRT de depuración, los errores no válidos del parámetro también produce una aserción, que está deshabilitada en este ejemplo mediante _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);
}
Parámetro no válido detectado en la función printf.   Archivo: línea de printf.c: 54
Expresión: ¡(formato! = NULL)  

Adiciones de comunidad

Mostrar:
© 2015 Microsoft