errno.h trong C
errno.h trong C
Header file có tên errno.h trong Thư viện C chuẩn định nghĩa biến nguyên errno, được thiết lập bởi system call (lời gọi hệ thống) và một số hàm thư viện về lỗi để chỉ rằng có lỗi đang xảy ra. Macro này là một sự mở rộng của kiểu int dạng lvalue có thể sửa đổi, vì thế nó có thể được đọc và được sửa đổi bởi một chương trình.
errno được thiết lập về 0 tại phần khởi động chương trình. Các hàm cụ thể của thư viện C chuẩn sửa đổi giá trị của nó về một số lớn hơn 0 để báo hiệu một số kiểu lỗi. Bạn cũng có thể sửa đổi giá trị của nó hoặc phục hồi nó về 0 tùy theo yêu cầu của bạn.
Header file có tên errno.h cũng định nghĩa một danh sách các macro để chỉ các mã lỗi khác nhau.
Các macro được định nghĩa trong errno.h
Bảng dưới liệt kê một số Macro được định nghĩa trong errno.h trong Thư viện C:
Macro | Mô tả |
---|---|
extern int errno | Đây là macro được thiết lập bởi system call và một số hàm thư viện về lỗi để chỉ rằng có lỗi đang xảy ra |
EDOM Domain Error | Macro này biểu diễn một domain error, mà xảy ra nếu một tham số đầu vào là ở bên ngoài miền mà hàm toán học đó được định nghĩa và errno được thiết lập là EDOM |
ERANGE Range Error | Macro này biểu diễn một range error, xảy ra nếu một tham số đầu vào là bên ngoài dãy giá trị mà hàm được định nghĩa, và errno được thiết lập là ERANGE |
1. Macro errno trong C
Macro errno trong C
Macro extern int errno trong Thư viện C được thiết lập bởi system call và một số hàm thư viện về lỗi để chỉ rằng có lỗi đang xảy ra.
Khai báo Macro errno trong C
Dưới đây là phần khai báo cho errno macro trong C.
extern int errno
Tham số
macro này không nhận bất kỳ tham số nào
Trả về giá trị
macro này không trả về bất kỳ giá trị nào
Ví dụ
Chương trình C sau minh họa cách sử dụng của errno Macro trong C.
#include <stdio.h> #include <errno.h> #include <string.h> extern int errno ; int main () { FILE *fp; fp = fopen("fileexample.txt", "r"); if( fp == NULL ) { fprintf(stderr, "Gia tri cua errno: %d\n", errno); fprintf(stderr, "Xay la loi khi mo file: %s\n", strerror(errno)); } else { fclose(fp); } return(0); }
Biên dịch và chạy chương trình C trên trong trường hợp file.txt không tồn tại:
2. Macro EDOM trong C
Macro EDOM trong C
Macro EDOM trong Thư viện C biểu diễn một domain error, mà xảy ra nếu một tham số đầu vào là ở bên ngoài miền mà hàm toán học đó được định nghĩa và errno được thiết lập là EDOM.
Khai báo Macro EDOM trong C
Dưới đây là phần khai báo cho EDOM Macro trong C.
#define EDOM some_value
Tham số
macro này không nhận bất kỳ tham số nào
Trả về giá trị
macro này không trả về bất kỳ giá trị nào
Ví dụ
Chương trình C sau minh họa cách sử dụng của EDOM Macro.
#include <stdio.h> #include <errno.h> #include <math.h> int main() { double val; errno = 0; val = sqrt(-10); if(errno == EDOM) { printf("Gia tri khong hop le \n"); } else { printf("Gia tri hop le\n"); } errno = 0; val = sqrt(10); if(errno == EDOM) { printf("Gia tri khong hop le\n"); } else { printf("Gia tri hop le\n"); } return(0); }
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
3. Macro ERANGE trong C
Macro ERANGE trong C
Macro ERANGE trong Thư viện C biểu diễn một range error, xảy ra nếu một tham số đầu vào là bên ngoài dãy giá trị mà hàm được định nghĩa, và errno được thiết lập là ERANGE.
Khai báo Macro ERANGE trong C
Dưới đây là phần khai báo cho ERANGE Macro trong C.
#define ERANGE some_value
Tham số
macro này không nhận bất kỳ tham số nào
Trả về giá trị
macro này không trả về bất kỳ giá trị nào
Ví dụ
Chương trình C sau minh họa cách sử dụng của ERANGE Macro.
#include <stdio.h> #include <errno.h> #include <math.h> int main() { double x; double value; x = 2.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) la ben ngoai day gia tri cua ham log\n", x); } else { printf("Log(%f) = %f\n", x, value); } x = 1.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) la ben ngoai day gia tri cua ham log\n", x); } else { printf("Log(%f) = %f\n", x, value); } x = 0.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) la ben ngoai day gia tri cua ham log\n", x); } else { printf("Log(%f) = %f\n", x, value); } return 0; }
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
Theo Tutorialspoint
Bài trước: ctype.h trong C
Bài tiếp: float.h trong C
Bạn nên đọc
Cũ vẫn chất
-
Last Name, First Name là gì? Cách điền chúng chính xác nhất
Hôm qua -
Những cụm từ hot trend 2024 trên mạng xã hội
Hôm qua 2 -
Tổng hợp code Đại Chiến Tam Quốc mới nhất
Hôm qua -
Những tấm gương điển hình của tinh thần vượt lên số phận
Hôm qua -
Code Will of Hashira mới nhất
Hôm qua -
Vòng lặp for trong Python
Hôm qua -
Cách khóa trang cá nhân Facebook không cho người lạ xem
Hôm qua 2 -
Cách tạo khung viền trang bìa trong Word
Hôm qua -
90+ phím tắt Google Docs cho Windows và Mac
Hôm qua -
Công ty màn hình Trung Quốc xin Apple tha thứ sau sự cố gian lận thông số
Hôm qua