Aracılığıyla paylaş


_fpieee_flt

IEEE kayan nokta özel durumlar için kullanıcı tanımlı tuzak işleyici başlatı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. Dolayısıyla, IEEE filtre yordamı içinde kullanılabilir yan tümcesi 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ı tuzak işleyici başlatır ve ilgili tüm bilgileri sağlar. Bu yordamı, gerektiğinde kendi IEEE özel durum işleyici başlatır seh mekanizması bir özel durum filtre görevi görür.

_FPIEEE_RECORD Fpieee.h içinde tanımlanan yapı, bir IEEE kayan nokta özel durumu ilgili bilgiler içermektedir. Bu yapı kullanıcı tanımlı Yakalama işleyicisi tarafından geçirilen _fpieee_flt.

_FPIEEE_RECORD alan

Description

unsigned int RoundingMode, unsigned int Precision

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

unsigned int Operation

Tuzak nedeniyle işlem türünü gösterir. Bir karşılaştırma türü ise (_FpCodeCompare), özel sağlayabilir _FPIEEE_COMPARE_RESULT (Fpieee.h'de tanımlandığı gibi) değerleri 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 yapılmaya çalışılan dönüştürme türünü belirlemek için türleri.

_FPIEEE_VALUE Operand1, _FPIEEE_VALUE Operand2, _FPIEEE_VALUE Operand3, _FPIEEE_VALUE Result

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

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

FormatKarşılık gelen değerin veri türü. Karşılık gelen değeri geçerli olmasa bile, biçim türü iade edilmesi.

ValueSonuç veya işlenen veri değeri.

Not: Operand3 yalnızca Itanium işlemci ailesi (IPF) işlevleri ile kullanılır.

_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 için sağlanan özel durumlar maskelemek için kullanılan bağımsız değişkenler arasındaki bir ilişkiyi yok _controlfp.

Her bit tam anlamını içeriğine bağlıdır:

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

EnableHer bit değerini ayarlayın, belirli özel durumu şu anda çıkarılmış olduğunu gösterir.

StatusHer bit değerini ayarlayın, belirli özel durum şu an beklemede olduğunu gösterir. Bu tarafından maskeli çünkü yükseltildiğinde olmayan özel durumlar içerir _controlfp.

Bunları etkinleştirdiğinizde, devre dışı bırakılan özel durumları üretilir. Bu kullanırken tanımsız davranışlarla sonuçlanabilir _fpieee_flt bir özel durum filtresi olarak. Her zaman _clearfp kayan nokta özel durumları etkinleştirmeden önce.

Gereksinimler

İşlev

Gerekli başlık

_fpieee_flt

<fpieee.h>

Daha fazla uyumluluk bilgileri için bkz: Uyumluluk giriş.

Ö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

Yoktur. Standart c işlevi çağırmak için kullanmak PInvoke. Daha fazla bilgi için bkz: Platform Çağırma örnekleri.

Ayrıca bkz.

Başvuru

Kayan nokta türü desteği

_control87, _controlfp, __control87_2

_controlfp_s