다음을 통해 공유


_fpieee_flt

IEEE 부동 소수점 예외에 대 한 사용자 정의 트랩 처리기를 호출합니다.

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

매개 변수

  • excCode
    예외 코드입니다.

  • excInfo
    Windows NT 예외 정보 구조에 대 한 포인터입니다.

  • handler
    사용자의 IEEE 트랩 처리기 루틴에 대 한 포인터입니다.

반환 값

반환 값을 _fpieee_flt 에서 반환 된 값입니다 handler.따라서 IEEE 필터 루틴을 사용할 수 있습니다의 절 하는 구조화 된 예외 처리 (SEH) 메커니즘을 제외 하 고.

설명

_fpieee_flt 함수 IEEE 부동 소수점 예외에 대 한 사용자 정의 트랩 처리기를 호출 하 고 모든 관련 정보를 제공 합니다.이 루틴이 필요할 때 직접 IEEE 예외 처리기가 호출 하는 SEH 메커니즘에서 예외 필터 역할을 합니다.

_FPIEEE_RECORD Fpieee.h에 정의 된 구조를 IEEE 부동 소수점 예외에 대 한 정보가 포함 되어 있습니다.이 구조는 사용자 정의 트랩 처리기에서 전달 된 _fpieee_flt.

_FPIEEE_RECORD 필드

설명

unsigned int RoundingMode, unsigned int Precision

부동 소수점 환경에 대 한 발생 한 예외 정보를 동시에 이러한 필드를 포함 합니다.

unsigned int Operation

트랩을 발생 시킨 작업 형식을 나타냅니다.비교 형식인 경우 (_FpCodeCompare), 특수 중 하나를 제공할 수 있습니다 _FPIEEE_COMPARE_RESULT (fpieee.h에 정의 됨) 값에 Result.Value 필드입니다.변환 형식 (_FpCodeConvert) 트랩 부동 소수점 변환 작업 동안 발생 했음을 나타냅니다.볼 수 있습니다 해당 Operand1 및 Result 형식을 시도 하 고 변환 형식을 결정 합니다.

_FPIEEE_VALUE Operand1, _FPIEEE_VALUE Operand2, _FPIEEE_VALUE Operand3, _FPIEEE_VALUE Result

이러한 구조 형식 및 제안 된 결과 및 피연산자의 값을 나타냅니다.

OperandValid응답 값이 유효한 지 여부를 나타내는 플래그입니다.

Format데이터 형식에 해당 하는 값입니다.해당 값이 잘못 되었습니다 경우에 서식 유형이 반환 될 수 있습니다.

Value결과 또는 피연산자 데이터 값입니다.

참고: Operand3 만 Itanium 프로세서 제품군 (IPF) 함수를 사용 합니다.

_FPIEEE_EXCEPTION_FLAGS Cause, _FPIEEE_EXCEPTION_FLAGS Enable, _FPIEEE_EXCEPTION_FLAGS Status

_FPIEEE_EXCEPTION_FLAGS 부동 소수점 예외 유형 당 1 비트 필드를 포함합니다.

대응 한이 필드 및 제공 예외 마스크에 사용 되는 인수는 _controlfp.

각 비트의 정확한 의미가 문맥에 따라 달라 집니다.

Cause각 비트를 설정에서 발생 하는 특정 예외를 나타냅니다.

Enable각 비트를 설정 특정 예외를 현재 마스크 처리 된 수 없음을 나타냅니다.

Status각 비트를 설정 특정 예외 현재 보류 중입니다.여기에 의해 마스크 된 때문에 발생 했습니다 않는 경우 예외 _controlfp.

사용 되지 않는 보류 중인 예외를 사용 하는 경우 발생 합니다.이 사용 하는 경우 정의 되지 않은 동작이 발생할 수 있습니다 _fpieee_flt 로 예외 필터.항상 호출 _clearfp 부동 소수점 예외를 사용 하도록 설정 하기 전에.

요구 사항

Function

필수 헤더

_fpieee_flt

<fpieee.h>

더 많은 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.

예제

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

해당 사항 없음. 표준 C 함수를 호출할 수 있습니다 PInvoke. 자세한 내용은 플랫폼 호출 예제.

참고 항목

참조

부동 소수점 지원

_control87, _controlfp, __control87_2

사용할