float_control
함수가 부동 소수점 동작을 지정합니다.
float_control( value,setting [push] | push | pop )
Flags
value,setting**[push]**
부동 소수점 동작을 지정합니다.valuecan be precise or except.자세한 내용은 /fp(부동 소수점 동작 지정)를 참조하십시오.settingcan either be on or off.경우 value 입니다 precise, 설정에 대 한 precise 및 except 지정 된.except 만 설정할 수 있습니다 on 때 precise 도 설정 된 on.
경우 선택적 push 토큰이 추가 됩니다, 현재 설정에 대 한 value 내부 컴파일러 스택으로 푸시됩니다.
push
현재 밀어넣기 float_control 내부 컴파일러 스택 수를 설정 합니다.pop
제거는float_control 내부 컴파일러 스택 맨 위에서 설정 하는 새로운 float_control 설정 합니다.
설명
해제할 수 없습니다 float_control precise off 시 except 에 있습니다.마찬가지로, precise 경우 기능 수 없습니다 fenv_access 에 있습니다.빠른 모델을 엄격 하 게 모델을 이동 하는 float_control pragma를 다음 코드를 사용:
#pragma float_control(except, off)
#pragma fenv_access(off)
#pragma float_control(precise, off)
// The following line is needed on Itanium processors
#pragma fp_contract(on)
빠른 모델에서 엄격 하 게 모델을 이동 하는 float_control pragma에서 다음 코드를 사용:
#pragma float_control(precise, on)
#pragma fenv_access(on)
#pragma float_control(except, on)
// The following line is needed on Itanium processors.
#pragma fp_contract(off)
다른 부동 소수점 pragma는 다음과 같습니다.
예제
다음 샘플 pragma를 사용 하 여 오버플로 부동 소수점 예외를 catch 하는 방법을 보여 줍니다. float_control.
// pragma_directive_float_control.cpp
// compile with: /EHa
#include <stdio.h>
#include <float.h>
double func( ) {
return 1.1e75;
}
#pragma float_control (except,on)
int main( ) {
float u[1];
unsigned int currentControl;
errno_t err;
err = _controlfp_s(¤tControl, ~_EM_OVERFLOW, _MCW_EM);
if (err != 0)
printf_s("_controlfp_s failed!\n");
try {
u[0] = func();
printf_s ("Fail");
return(1);
}
catch (...) {
printf_s ("Pass");
return(0);
}
}