Rất thường tôi thấy trong phủ định mã C của mã lỗi được trả về, ví dụ return -EINVAL
thay vì return EINVAL
. Tại sao sử dụng phủ định?
Rất thường tôi thấy trong phủ định mã C của mã lỗi được trả về, ví dụ return -EINVAL
thay vì return EINVAL
. Tại sao sử dụng phủ định?
Câu trả lời:
Trên nhiều UNIXen, quy ước cho các tòa nhà chọc trời là chúng trả về mã lỗi bị phủ nhận trong trường hợp có lỗi và giá trị thực tế trong trường hợp thành công.
Điều này được dịch ở phía không gian người dùng thành -1
các lỗi có mã lỗi dương errno
hoặc giá trị thực trong trường hợp thành công.
Sự cần thiết phải sử dụng hai giá trị trả về này là do nhiều trả về trong loại ngôn ngữ này gây khó chịu, vì bạn phải sử dụng các tham số ngoài để đưa ra một lỗi cuối cùng.