Trước tiên, hàm feupdateenv () lưu các ngoại lệ dấu phẩy động được nâng lên, khôi phục môi trường dấu phẩy động từ đối tượng fenv_t đã cho, sau đó tăng các ngoại lệ đã lưu trước đó.
Hàm feupdateenv () được định nghĩa trong tệp tiêu đề.
nguyên mẫu feupdateenv ()
int feupdateenv (fenv_t * envp);
Hàm feupdateenv () nhận một con trỏ kiểu fenv_t làm đối số của nó chứa một môi trường dấu phẩy động được thiết lập trước đó bằng cách sử dụng feholdexcept hoặc fegetenv và khôi phục môi trường dấu phẩy động đó cùng với môi trường hiện tại.
Tham số feupdateenv ()
- envp: Con trỏ đến đối tượng fenv_t được đặt bởi một lệnh gọi trước đó thành feholdexcept hoặc fegetenv hoặc bằng FE_DFL_ENV.
feupdateenv () Giá trị trả về
- Khi thành công, hàm feupdateenv () trả về 0.
- Khi thất bại, nó trả về nonzero.
Ví dụ: Hàm feupdateenv () hoạt động như thế nào?
#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() ( fenv_t envp; /* raise certain exceptions */ feraiseexcept(FE_INVALID|FE_DIVBYZERO); print_exceptions(); /* saves and clears current exceptions */ feupdateenv(&envp); print_exceptions(); /* restores saved exceptions */ feupdateenv(&envp); print_exceptions(); return 0; )
Khi bạn chạy chương trình, đầu ra sẽ là:
Đã tăng ngoại lệ: FE_DIVBYZERO FE_INVALID Đã tăng ngoại lệ: Không Đã tăng ngoại lệ: FE_DIVBYZERO FE_INVALID