Namespaces
Variants

fegetexceptflag, fesetexceptflag

From cppreference.net
< c ‎ | numeric ‎ | fenv
헤더 파일에 정의됨 <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