fegetexceptflag, fesetexceptflag
From cppreference.net
|
헤더 파일에 정의됨
<fenv.h>
|
||
|
int
fegetexceptflag
(
fexcept_t
*
flagp,
int
excepts
)
;
|
(1) | (C99부터) |
|
int
fesetexceptflag
(
const
fexcept_t
*
flagp,
int
excepts
)
;
|
(2) | (C99부터) |
1) 비트마스크 인수
excepts
에 나열된 부동 소수점 예외 플래그의 전체 내용을 얻으려 시도합니다.
excepts
는
부동 소수점 예외 매크로
의 비트별 OR입니다.
2)
flagp
에 나열된 부동 소수점 예외 플래그들 중
excepts
에 지정된 전체 내용을 부동 소수점 환경으로 복사하려고 시도합니다. 어떤 예외도 발생시키지 않으며 플래그만 수정합니다.
부동소수점 예외 플래그의 전체 내용이 반드시 예외가 발생했는지 또는 해제되었는지를 나타내는 불리언 값은 아닙니다. 예를 들어, 불리언 상태와 예외를 트리거한 코드의 주소를 포함하는 구조체일 수 있습니다. 이러한 함수들은 모든 해당 내용을 가져와 구현 정의 형식으로
flagp
에 저장하거나 가져옵니다.
목차 |
매개변수
| flagp | - | 플래그가 저장되거나 읽혀질 fexcept_t 객체를 가리키는 포인터 |
| excepts | - | 가져오거나 설정할 예외 플래그들을 나열하는 비트마스크 |
반환값
0 성공 시 0, 그렇지 않으면 0이 아닌 값.
예제
이 코드 실행
#include <stdio.h> #include <fenv.h> #pragma STDC FENV_ACCESS ON void show_fe_exceptions(void) { printf("current exceptions raised: "); if(fetestexcept(FE_DIVBYZERO)) printf(" FE_DIVBYZERO"); if(fetestexcept(FE_INEXACT)) printf(" FE_INEXACT"); if(fetestexcept(FE_INVALID)) printf(" FE_INVALID"); if(fetestexcept(FE_OVERFLOW)) printf(" FE_OVERFLOW"); if(fetestexcept(FE_UNDERFLOW)) printf(" FE_UNDERFLOW"); if(fetestexcept(FE_ALL_EXCEPT)==0) printf(" none"); printf("\n"); } int main(void) { fexcept_t excepts; /* 현재 예외 플래그 집합을 설정합니다. */ feraiseexcept(FE_INVALID); show_fe_exceptions(); /* 현재 예외 플래그를 저장합니다. */ fegetexceptflag(&excepts,FE_ALL_EXCEPT); /* 일시적으로 두 개의 다른 예외를 발생시킵니다. */ feclearexcept(FE_ALL_EXCEPT); feraiseexcept(FE_OVERFLOW | FE_INEXACT); show_fe_exceptions(); /* 이전 예외 플래그를 복원합니다. */ fesetexceptflag(&excepts,FE_ALL_EXCEPT); show_fe_exceptions(); return 0; }
출력:
current exceptions raised: FE_INVALID current exceptions raised: FE_INEXACT FE_OVERFLOW current exceptions raised: FE_INVALID
참고문헌
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.6.2.2 fegetexceptflag 함수 (p: 210)
-
- 7.6.2.4 fesetexceptflag 함수 (p: 211)
- C99 표준 (ISO/IEC 9899:1999):
-
- 7.6.2.2 fegetexceptflag 함수 (p: 191)
-
- 7.6.2.4 fesetexceptflag 함수 (p: 192)
참조 항목
|
C++ 문서
for
fegetexceptflag
,
fesetexceptflag
|