_fpieee_flt
Wywołuje obsługi użytkownika pułapki dla IEEE zmiennoprzecinkowych wyjątki.
int _fpieee_flt(
unsigned long excCode,
struct _EXCEPTION_POINTERS *excInfo,
int handler(_FPIEEE_RECORD *)
);
Parametry
excCode
Wyjątek w kodzie.excInfo
Wskaźnik do struktury informacji wyjątek systemu Windows NT.handler
Wskaźnik do procedury obsługi pułapki IEEE użytkownika.
Wartość zwracana
Wartość zwracaną przez _fpieee_flt jest wartością zwróconą przez handler.Jako takie, IEEE rutynowych filtr może być używany w z wyjątkiem klauzula structured mechanizm obsługi wyjątków (strukturalnej obsługi wyjątków).
Uwagi
_fpieee_flt Funkcja wywołuje obsługi użytkownika pułapki dla IEEE zmiennoprzecinkowych wyjątki i zawiera on wszystkie istotne informacje.Ta procedura służy jako filtru wyjątków w mechanizmie strukturalnej obsługi wyjątków, które wywołuje własne IEEE Obsługa wyjątków, gdy jest to konieczne.
_FPIEEE_RECORD Strukturę, zdefiniowaną w Fpieee.h, zawiera informacje dotyczące wyjątek zmiennoprzecinkowych IEEE.Ta struktura jest przekazywana do obsługi użytkownika pułapki przez _fpieee_flt.
Pole _FPIEEE_RECORD |
Opis |
---|---|
unsigned int RoundingMode, unsigned int Precision |
Te pola zawierają informacje o środowisku zmiennoprzecinkowych w czasie Wystąpił wyjątek. |
unsigned int Operation |
Wskazuje typ operacji, która spowodowała nadlewki i podlewki.Jeśli typem jest porównanie (_FpCodeCompare), można podać jeden z specjalne _FPIEEE_COMPARE_RESULT wartości (jak określono w Fpieee.h) w Result.Value pole.Typ konwersji (_FpCodeConvert) wskazuje, że sidła wystąpił podczas operacji zmiennoprzecinkowych konwersji.Zapoznanie się z Operand1 i Result typy, aby określić typ konwersji prób. |
_FPIEEE_VALUE Operand1, _FPIEEE_VALUE Operand2, _FPIEEE_VALUE Result |
Te struktury wskazują typy oraz wartości wyniku proponowanego i operandów: OperandValidFlaga wskazująca, czy odpowiada wartość jest nieprawidłowa. FormatTyp danych odpowiedniej wartości.Typ formatu może być zwracane, nawet jeśli odpowiadająca jej wartość nie jest prawidłowa. ValueWynik lub argument wartości danych. |
_FPIEEE_EXCEPTION_FLAGS Cause, _FPIEEE_EXCEPTION_FLAGS Enable, _FPIEEE_EXCEPTION_FLAGS Status |
_FPIEEE_EXCEPTION_FLAGS zawiera pole jeden bit na typ wyjątku ruchomy punkt. Istnieje związek między te pola i argumenty używane do maskowania wyjątki dostarczane do _controlfp. Dokładne znaczenie każdego bitu zależy od kontekstu: CauseKażdy ustawiony bit wskazuje określonego wyjątku, który został podniesiony. EnableKażdy ustawiony bit wskazuje, że określonego wyjątku jest aktualnie zaznaczona. StatusKażdy ustawiony bit wskazuje, że określonego wyjątku jest obecnie oczekuje na realizację.Wartość ta obejmuje wyjątki, które nie były hodowane, ponieważ były one maskowane przez _controlfp. |
Do czasu wyjątków, które są wyłączone są wywoływane, gdy zostanie włączone.Może to spowodować niezdefiniowane zachowanie podczas korzystania z _fpieee_flt jako filtru wyjątków.Wywoływanie zawsze _clearfp przed włączeniem ruchomy punkt wyjątki.
Wymagania
Funkcja |
Wymagany nagłówek |
---|---|
_fpieee_flt |
<fpieee.h> |
Aby uzyskać więcej informacji na temat zgodności, zobacz Zgodność we Wstępie.
Przykład
// crt_fpieee.c
// This program demonstrates the implementation of
// a user-defined floating-point exception handler using the
// _fpieee_flt function.
#include <fpieee.h>
#include <excpt.h>
#include <float.h>
#include <stddef.h>
int fpieee_handler( _FPIEEE_RECORD * );
int fpieee_handler( _FPIEEE_RECORD *pieee )
{
// user-defined ieee trap handler routine:
// there is one handler for all
// IEEE exceptions
// Assume the user wants all invalid
// operations to return 0.
if ((pieee->Cause.InvalidOperation) &&
(pieee->Result.Format == _FpFormatFp32))
{
pieee->Result.Value.Fp32Value = 0.0F;
return EXCEPTION_CONTINUE_EXECUTION;
}
else
return EXCEPTION_EXECUTE_HANDLER;
}
#define _EXC_MASK \
_EM_UNDERFLOW + \
_EM_OVERFLOW + \
_EM_ZERODIVIDE + \
_EM_INEXACT
int main( void )
{
// ...
__try {
// unmask invalid operation exception
_controlfp_s(NULL, _EXC_MASK, _MCW_EM);
// code that may generate
// fp exceptions goes here
}
__except ( _fpieee_flt( GetExceptionCode(),
GetExceptionInformation(),
fpieee_handler ) ){
// code that gets control
// if fpieee_handler returns
// EXCEPTION_EXECUTE_HANDLER goes here
}
// ...
}
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywoływania platformy.
Zobacz też
Informacje
Obsługa liczb zmiennoprzecinkowych