Exportar (0) Imprimir
Expandir todo
div
EOF
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

_matherr

Controlar errores de matemáticas.

int _matherr(
   struct _exception *except 
);

excepto

Puntero a la estructura que contiene información de error.

_matherr devuelve 0 para indicar un error o un valor distinto de cero para indicar correctamente. Si _matherr devuelve 0, un mensaje de error puede mostrar y errno se establece en un valor de error adecuado. Si _matherr devuelve un valor distinto de cero, no se muestra ningún mensaje de error y errno permanece sin modificar.

Para obtener más información sobre los códigos de retorno, vea _doserrno, errno, _sys_errlist, y _sys_nerr.

Los errores de procesos de la función dematherr de _generados por las funciones de punto flotante de la librería matemática. _matherr de llamada de estas funciones cuando se detecta un error.

Para el control de errores especial, puede proporcionar otra definición de _matherr. Si utiliza la versión dinámicamente vinculada de la biblioteca en tiempo de ejecución de C (Msvcr90.dll), puede reemplazar la rutina predeterminada dematherr de _en un archivo ejecutable cliente con una versión definido por el usuario. Sin embargo, no puede reemplazar la rutina predeterminada de _matherr en un cliente de DLL de Msvcr90.dll.

Cuando se produce un error en una rutina matemático, _matherr lleva un puntero a una estructura del tipo de _exception (definido en Math.h) como argumento. la estructura de _exception contiene los elementos siguientes.

tipo int

tipo de excepción.

*name char

Nombre de la función donde se produjo el error.

arg1 doble, arg2

Primero y segundo (si existe) argumentos de la función.

retval doble

Valor que se devolverá por la función.

tipo especifica el tipo de error de matemáticas. Es uno de los valores siguientes, definidos en Math.h.

_DOMAIN

error de dominio de argumentos.

_SING

singularidad de argumento.

_OVERFLOW

error de intérvalo de capacidad máxima.

_PLOSS

Pérdida de significado parcial.

_TLOSS

Pérdida total de significado.

_UNDERFLOW

El resultado es demasiado pequeño para ser representado. (Esta condición no se admite actualmente.)

El miembro de estructura nombre es un puntero a una cadena terminada en null que contiene el nombre de la función que produjo el error. Los miembros de la estructura arg1 y arg2 especifican valores que produjo el error. (Si solo se proporciona un argumento, se almacena en arg1.)

El valor devuelto predeterminado para el error especificado es retval. Si cambia el valor devuelto, debe especificar si se ha producido un error realmente.

rutina

Encabezado necesario

_matherr

<math.h>

Para obtener más información de compatibilidad, vea compatibilidad en la Introducción.

bibliotecas

// crt_matherr.c
/* illustrates writing an error routine for math 
 * functions. The error function must be:
 *      _matherr
 */

#include <math.h>
#include <string.h>
#include <stdio.h>

int main()
{
    /* Do several math operations that cause errors. The _matherr
     * routine handles _DOMAIN errors, but lets the system handle
     * other errors normally.
     */
    printf( "log( -2.0 ) = %e\n", log( -2.0 ) );
    printf( "log10( -5.0 ) = %e\n", log10( -5.0 ) );
    printf( "log( 0.0 ) = %e\n", log( 0.0 ) );
}

/* Handle several math errors caused by passing a negative argument
 * to log or log10 (_DOMAIN errors). When this happens, _matherr
 * returns the natural or base-10 logarithm of the absolute value
 * of the argument and suppresses the usual error message.
 */
int _matherr( struct _exception *except )
{
    /* Handle _DOMAIN errors for log or log10. */
    if( except->type == _DOMAIN )
    {
        if( strcmp( except->name, "log" ) == 0 )
        {
            except->retval = log( -(except->arg1) );
            printf( "Special: using absolute value: %s: _DOMAIN "
                     "error\n", except->name );
            return 1;
        }
        else if( strcmp( except->name, "log10" ) == 0 )
        {
            except->retval = log10( -(except->arg1) );
            printf( "Special: using absolute value: %s: _DOMAIN "
                     "error\n", except->name );
            return 1;
        }
    }
    printf( "Normal: " );
    return 0;    /* Else use the default actions */
}

Special: using absolute value: log: _DOMAIN error
log( -2.0 ) = 6.931472e-001
Special: using absolute value: log10: _DOMAIN error
log10( -5.0 ) = 6.989700e-001
Normal: log( 0.0 ) = -1.#INF00e+000

No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft