Ini khusus implementasi. Anda dapat melakukan ini:
int main()
{
assert(0);
}
Kemudian jalankan:
./a.out
echo $?
1 (<- atau apa pun)
Ini setidaknya akan memberi tahu Anda apa yang diharapkan untuk penyiapan Anda. Saya mendapatkan 134 pada beberapa kotak Linux dengan GCC dan g++.
Standar C99 (tidak berubah dalam C11) menyatakan bahwa assert
memanggil abort
dan abort
stuff menyatakan ini tentang kode pengembalian:
Bentuk yang ditentukan implementasi dari status penghentian yang tidak berhasil dikembalikan ke lingkungan host melalui pemanggilan fungsi
raise(SIGABRT)
.
Ini didokumentasikan di bagian 7.2.1.1 (tegaskan) dan 7.20.4.1 (batalkan) standar C99 di sini.
Banyak sistem UNIX akan mengembalikan 128 ditambah nomor sinyal (SIGABRT
adalah sinyal nomor 6) sehingga Anda bisa mendapatkan 134. Apa pun yang Anda dapatkan, itu harus didokumentasikan oleh implementasi C.
Misalnya, lihat di sini untuk gcc
. Meskipun cukup diam tentang apa yang dikembalikan ke lingkungan panggilan. Dari bagian spesifik di sini:
Beberapa pilihan dibuat oleh perpustakaan dan sistem operasi (atau lingkungan lain saat mengompilasi untuk lingkungan yang berdiri sendiri); lihat dokumentasi mereka untuk detailnya.
Dan ini:
Perilaku dari sebagian besar poin ini bergantung pada implementasi library C, dan tidak ditentukan oleh GCC itu sendiri.
Begitu juga dengan glibc
doco di sini tentang penghentian program (khususnya bit status keluar). Itu menyebutkan konvensi tetapi tidak ada aturan tegas.