C ++ feholdexcept () - C ++ Standart Kitaplığı

C ++ 'daki feholdexcept () işlevi önce geçerli kayan nokta ortamını bir fenv_t nesnesine kaydeder ve ardından tüm kayan nokta durum bayraklarını temizler.

Feholdexcept () işlevi başlık dosyasında tanımlanmıştır.

feholdexcept () prototipi

 int feholdexcept (fenv_t * envp);

Feholdexcept () işlevi, fegetenv () tarafından yapıldığı gibi geçerli kayan nokta ortamını envp ile gösterilen nesneye kaydeder ve tüm kayan nokta durum bayraklarını temizler.

Son olarak, kesintisiz modu kurar, böylece gelecekteki kayan nokta istisnaları, feupdateenv veya fesetenv çağrılarak kayan nokta ortamı geri yüklenene kadar yürütmeyi kesintiye uğratmaz.

feholdexcept () Parametreler

  • envp: Kayan noktalı ortamın durumunu saklayan fenv_t türünde bir nesnenin işaretçisi.

feholdexcept () Dönüş değeri

  • Başarı durumunda, feholdexcept () işlevi 0 döndürür.
  • Başarısızlık halinde sıfırdan farklı bir değer döndürür.

Örnek: feholdexcept () işlevi nasıl çalışır?

 #include #include #include #pragma STDC FENV_ACCESS ON using namespace std; void print_exceptions() ( cout << "Raised exceptions: "; if(fetestexcept(FE_ALL_EXCEPT)) ( if(fetestexcept(FE_DIVBYZERO)) cout << "FE_DIVBYZERO "; if(fetestexcept(FE_INEXACT)) cout << "FE_INEXACT "; if(fetestexcept(FE_INVALID)) cout << "FE_INVALID "; if(fetestexcept(FE_OVERFLOW)) cout << "FE_OVERFLOW "; if(fetestexcept(FE_UNDERFLOW)) cout << "FE_UNDERFLOW "; ) else cout << "None"; cout << endl; ) int main(void) ( fenv_t envp; /* raise certain exceptions */ feraiseexcept(FE_INVALID|FE_DIVBYZERO); print_exceptions(); /* saves and clears current exceptions */ feholdexcept(&envp); print_exceptions(); /* restores saved exceptions */ feupdateenv(&envp); print_exceptions(); return 0; )

Programı çalıştırdığınızda, çıktı:

 Yükseltilmiş istisnalar: FE_DIVBYZERO FE_INVALID Yükseltilmiş istisnalar: Yok Artan istisnalar: FE_DIVBYZERO FE_INVALID

Ilginç makaleler...