Mengapa kode kesalahan dinegasikan?


12

Sangat sering saya melihat negasi kode C dari kode kesalahan yang dikembalikan, misalnya return -EINVALbukan return EINVAL. Mengapa menggunakan negasi?

c 

Jawaban:


8

Pada banyak UNIXen, konvensi untuk syscalls adalah mereka mengembalikan kode kesalahan yang dinegasikan jika terjadi kesalahan, dan nilai aktual jika berhasil.

Ini diterjemahkan pada sisi ruang pengguna -1untuk kesalahan dengan kode kesalahan positif di errno, atau nilai aktual jika sukses.

Kebutuhan untuk tujuan ganda dari nilai pengembalian adalah karena pengembalian ganda dalam jenis bahasa ini merepotkan, karena Anda harus menggunakan parameter keluar untuk menahan kesalahan akhirnya.


4

Itu adalah konvensi; banyak fungsi mengembalikan hasil yang sangat positif pada kesuksesan dan hasil negatif pada kegagalan. Awalnya, itu terkait dengan kode pengembalian proses Unix. Keberhasilan ditunjukkan oleh 0.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.