Hàm feholdexcept () trong C ++ trước tiên lưu môi trường dấu phẩy động hiện tại vào đối tượng fenv_t và sau đó xóa tất cả các cờ trạng thái dấu chấm động.
Hàm feholdexcept () được định nghĩa trong tệp tiêu đề.
nguyên mẫu feholdexcept ()
int feholdexcept (fenv_t * envp);
Hàm feholdexcept () lưu môi trường dấu phẩy động hiện tại vào đối tượng được trỏ bởi envp như được thực hiện bởi fegetenv () và xóa tất cả các cờ trạng thái dấu chấm động.
Cuối cùng nó cài đặt chế độ không dừng để các ngoại lệ dấu phẩy động trong tương lai sẽ không làm gián đoạn việc thực thi, cho đến khi môi trường dấu phẩy động được khôi phục bằng cách gọi feupdateenv hoặc fesetenv.
Tham số feholdexcept ()
- envp: Con trỏ tới một đối tượng kiểu fenv_t lưu trữ trạng thái của môi trường dấu phẩy động.
feholdexcept () Giá trị trả về
- Khi thành công, hàm feholdexcept () trả về 0.
- Khi thất bại, nó trả về nonzero.
Ví dụ: Hàm feholdexcept () 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(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; )
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