Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Makro global yang menyimpan kode kesalahan yang diatur selama eksekusi program, dan string yang setara dengan kode kesalahan untuk ditampilkan.
Sintaks
#define errno (*_errno())
#define _doserrno (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())
Keterangan
Keduanya errno
dan _doserrno
diatur ke 0 oleh runtime selama startup program. errno
diatur pada kesalahan dalam panggilan tingkat sistem. Karena errno
menyimpan nilai untuk panggilan terakhir yang mengaturnya, nilai ini dapat diubah dengan berhasil memanggil. Panggilan pustaka run-time yang diatur errno
pada kesalahan tidak dihapus errno
saat berhasil. Selalu bersihkan errno
_set_errno(0)
dengan memanggil segera sebelum panggilan yang dapat mengaturnya, dan periksa segera setelah panggilan.
Pada kesalahan, errno
tidak selalu diatur ke nilai yang sama dengan kode kesalahan yang dikembalikan oleh panggilan sistem. Untuk operasi I/O, _doserrno
menyimpan kode kesalahan sistem operasi yang setara errno
dengan kode. Untuk sebagian besar operasi non-I/O, nilai _doserrno
tidak ditetapkan.
Setiap errno
nilai dikaitkan dengan pesan kesalahan dalam yang dapat dicetak _sys_errlist
dengan menggunakan salah perror
satu fungsi, atau disimpan dalam string dengan menggunakan salah strerror
satu fungsi atau strerror_s
. Fungsi perror
dan strerror
menggunakan _sys_errlist
array dan _sys_nerr
—jumlah elemen dalam _sys_errlist
—untuk memproses informasi kesalahan. Akses langsung ke _sys_errlist
dan _sys_nerr
tidak digunakan lagi karena alasan keamanan kode. Kami menyarankan agar Anda menggunakan versi fungsional yang lebih aman alih-alih makro global, seperti yang ditunjukkan di sini:
Makro global | Setara fungsional |
---|---|
_doserrno |
_get_doserrno , _set_doserrno |
errno |
_get_errno , _set_errno |
_sys_errlist , _sys_nerr |
strerror_s , , _strerror_s _wcserror_s ,__wcserror_s |
Rutinitas matematika pustaka diatur errno
dengan memanggil _matherr
. Untuk menangani kesalahan matematika secara berbeda, tulis rutinitas Anda sendiri sesuai dengan _matherr
deskripsi referensi dan beri nama _matherr
.
Semua errno
nilai adalah konstanta yang telah ditentukan sebelumnya di <errno.h>
, dan kompatibel dengan UNIX. Hanya ERANGE
, EILSEQ
, dan EDOM
ditentukan dalam standar ISO C99. Untuk daftar lengkapnya, lihat errno
konstanta.
Persyaratan
Makro global | Header yang diperlukan | Header opsional |
---|---|---|
errno |
<errno.h> atau <stdlib.h> , <cerrno> atau <cstdlib> (C++) |
|
_doserrno , , _sys_errlist _sys_nerr |
<stdlib.h> , <cstdlib> (C++) |
<errno.h> , <cerrno> (C++) |
Makro _doserrno
, _sys_errlist
, dan _sys_nerr
adalah ekstensi Microsoft. Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Lihat juga
Variabel global
errno
Konstanta
perror
, _wperror
strerror
, , _strerror
_wcserror
,__wcserror
strerror_s
, , _strerror_s
_wcserror_s
,__wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno