_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. 자세한 내용은 플랫폼 호출 예제.