Bildirim
int feraiseexcept(int excepts); (C99)
Açıklama
Excepts parametresi ile gösterilen istisnaları devreye koyar. Eğer istisnalardan biri FE_OVERFLOW veya FE_UNDERFLOW ise, bu fonksiyon ayrıca FE_INEXACT değerini de devreye sokabilir.
Parametreler
excepts: Devreye girecek istisna değerlerini gösterir.
Dönüş değeri
Eğer tüm istisnalar devreye girmişse 0, aksi takdirde sıfır olmayan bir değer geri döndürür.
Örnek
#include <stdio.h>
#include <fenv.h>
void Test_Except(int idsonuc);
int main(void) {
feclearexcept (FE_ALL_EXCEPT);
Test_Except(fetestexcept(FE_ALL_EXCEPT));
/* İstisna devreye koyma */
if (!feraiseexcept(FE_INVALID)) Test_Except(fetestexcept(FE_ALL_EXCEPT));
return 0;
}
void Test_Except(int idsonuc)
{
printf("İşlem hata bildirimi:");
if (idsonuc==0) printf(" Yok"); // 0 (0x00)
if (idsonuc==FE_INVALID) printf(" FE_INVALID"); // 1 (0x01)
if (idsonuc==FE_DENORMAL) printf(" FE_DENORMAL"); // 2 (0x02)
if (idsonuc==FE_DIVBYZERO) printf(" FE_DIVBYZERO"); // 4 (0x04)
if (idsonuc==FE_OVERFLOW) printf(" FE_OVERFLOW"); // 8 (0x08)
if (idsonuc==FE_UNDERFLOW) printf(" FE_UNDERFLOW"); // 16 (0x10)
if (idsonuc==FE_INEXACT) printf(" FE_INEXACT"); // 32 (0x20)
printf("\n");
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
İşlem hata bildirimi: Yok İşlem hata bildirimi: FE_INVALID
Yukarıdaki program, tüm istisnaları temizledikten sonra feraiseexcept() fonksiyonu ile FE_INVALID istisnasını devreye sokar ve bu değeri ekrana yazar.