_matherr
Gestisce gli errori matematici.
int _matherr(
struct _exception *except
);
Parametri
- salvo
Puntatore a una struttura contenente informazioni sugli errori.
Valore restituito
_matherr restituisce 0 per indicare un errore o un valore diverso da zero per indicare l'esito positivo.se _matherr restituisce 0, un messaggio di errore che possono essere visualizzati e errno è impostato su un valore di errore appropriato.se _matherr restituisce un valore diverso da zero, non viene visualizzato alcun messaggio di errore e errno rimane invariato.
per ulteriori informazioni sui codici restituiti, vedere _doserrno, errno, _sys_errlist e _sys_nerr.
Note
_matherr errori di processi di funzione generati dalle funzioni a virgola mobile della raccolta matematica._Di chiamata delle funzionimatherr quando viene rilevato un errore.
Per la gestione degli errori speciale, è possibile fornire una definizione diversa di _matherr.Se si utilizza la versione in modo dinamico collegata della libreria di runtime del linguaggio C (Msvcr90.dll), è possibile sostituire predefinito _matherr routine in un eseguibile client con una versione definita dall'utente.Tuttavia, non è possibile sostituire l'oggetto predefinito _matherr routine in un client di DLL Msvcr90.dll.
Quando si verifica un errore in una routine matematiche, _matherr viene chiamato con un puntatore a un oggetto _exception digitare la struttura (definita in Math.h) come argomento._exception la struttura contiene i seguenti elementi.
tipo int
tipo di eccezione.*name char
Nome della funzione in cui si è verificato l'errore.doppio arg1, arg2
Primo e il secondo (se presenti) argomenti della funzione.doppio retval
Valore da restituire dalla funzione.
tipo specifica il tipo di errore matematica.È uno dei seguenti valori, definiti in Math.h.
_DOMAIN
Errore di domini argomento._SING
singolarità di argomento._OVERFLOW
Errore di timeout di overflow._PLOSS
Perdita parziale di significato._TLOSS
Perdita totale di significato._UNDERFLOW
Il risultato è troppo piccolo per essere rappresentato.(Questa condizione non è attualmente supportati.)
Il membro della struttura nome è un puntatore a una stringa con terminazione null che contiene il nome della funzione che ha provocato l'errore.I membri della struttura arg1 e arg2 specificare i valori che hanno provocato l'errore.(Solo se viene fornito un argomento, è archiviata in arg1).
Il valore restituito predefinito dell'errore specificato è retval.Se si modifica il valore restituito, deve specificare se un errore in realtà si è verificato.
Requisiti
routine |
Intestazione di associazione |
---|---|
_matherr |
<math.h> |
Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.
Librerie
Tutte le versioni di Librerie di runtime del linguaggio C.
Esempio
// 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 */
}
Output
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
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.