Sangat sering saya melihat negasi kode C dari kode kesalahan yang dikembalikan, misalnya return -EINVAL
bukan return EINVAL
. Mengapa menggunakan negasi?
12
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 -1
untuk 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.
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.