_fpieee_flt

IEEE kayan nokta özel durumlar için kullanıcı tanımlı tuzak işleyicisini çağırır.

int _fpieee_flt( 
   unsigned long excCode,
   struct _EXCEPTION_POINTERS *excInfo,
   int handler(_FPIEEE_RECORD *) 
);

Parametreler

  • excCode
    Özel durum kodu.

  • excInfo
    Windows NT özel bilgi yapısı için işaretçi.

  • handler
    Kullanıcının IEEE tuzak işleyici yordamı için işaretçi.

Dönüş Değeri

Dönüş değeri _fpieee_flt tarafından döndürülen değeri handler.Bu nedenle, IEEE filtre yordamı içinde kullanılabilir yan tümce yapılandırılmış özel durum işleme (SEH) mekanizması dışında.

Notlar

_fpieee_flt İşlevi IEEE kayan nokta özel durumlar için kullanıcı tanımlı yakalama işleyicisi çağırır ve tüm ilgili bilgiler sağlar.Bu yordamı bir özel durum filtresi gerektiğinde kendi IEEE özel durum işleyicisi çağırır SEH mekanizması olarak görür.

_FPIEEE_RECORD Yapısı, Fpieee.h içinde tanımlanan bir IEEE kayan nokta özel durumu hakkında bilgi içerir.Bu yapı kullanıcı tanımlı yakalama işleyicisi tarafından geçirilen _fpieee_flt.

_FPIEEE_RECORD alanı

Tanımlama

unsigned int RoundingMode, unsigned int Precision

Bu alanları özel durum oluştu zaman kayan nokta ortamı hakkında bilgi içerir.

unsigned int Operation

Tuzak neden olduğu işlem türünü gösterir.Bir karşılaştırma türündeyse (_FpCodeCompare), özel birini tedarik _FPIEEE_COMPARE_RESULT değerleri (Fpieee.h'de tanımlandığı gibi) Result.Value alan.Dönüştürme türünü (_FpCodeConvert) tuzak bir kayan nokta dönüştürme işlemi sırasında oluştu gösterir.Bakabilirsiniz Operand1 ve Result türleri yapılmaya çalışılan dönüştürme türünü belirlemek için.

_FPIEEE_VALUE Operand1, _FPIEEE_VALUE Operand2, _FPIEEE_VALUE Result

Bu yapılar, türleri ve önerilen sonuç ve işlenen değerlerini belirtin:

OperandValidYanıt değeri geçerli olup olmadığını gösteren bayrak.

FormatKarşılık gelen değerin veri türü.Karşılık gelen değer geçersiz olsa bile biçim türü iade edilmesi.

ValueSonuç veya işlenen veri değeri.

_FPIEEE_EXCEPTION_FLAGS Cause, _FPIEEE_EXCEPTION_FLAGS Enable, _FPIEEE_EXCEPTION_FLAGS Status

_FPIEEE_EXCEPTION_FLAGS kayan nokta özel durumu türü başına bir bit alanı içerir.

Bu alanlar ve özel durumlar için sağlanan maskelemek için kullanılan bağımsız değişkenler arasındaki ilişkiyi yok _controlfp.

Her bit tam anlamı bağlama bağlıdır:

CauseHer bit değerini ayarlayın Sürüldü belirli bir özel durum gösterir.

EnableHer bit değerini ayarlayın, belirli özel durum şu anda maskelenmemiş olduğunu gösterir.

StatusHer bit değerini ayarlayın, belirli özel durum şu anda beklemede olduğunu gösterir.Buna göre maskelenen çünkü oluşturulduğunda olmayan özel durumlar dahildir _controlfp.

Devre dışı bırakılan durumlar, etkinleştirdiğinizde ortaya çıkar.Bu kullanırken tanımsız davranışlara neden olabilir _fpieee_flt bir özel durum filtresi olarak.Her zaman Ara _clearfp kayan nokta özel durumları etkinleştirmeden önce.

Gereksinimler

Function

Gerekli başlık

_fpieee_flt

<fpieee.h>

Daha fazla uyumluluk bilgisi için Giriş altındaki Uyumluluk bölümüne bakın.

Örnek

// 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

   }

   // ...
}

.NET Framework Eşdeğeri

Uygulanamaz. Standart C işlevini çağırmak için PInvoke kullanın. Daha fazla bilgi için bkz. Platform Çağırma Örnekleri.

Ayrıca bkz.

Başvuru

Kayan Nokta Desteği

_control87, _controlfp, __control87_2

_controlfp_s