Ya, bisa .
Misalnya, dalam dialek C yang digunakan dalam sistem operasi Plan 9main
biasanya dinyatakan sebagai void
fungsi, tetapi status keluar dikembalikan ke lingkungan pemanggilan dengan melewatkan penunjuk string ke exits()
fungsi. String kosong menunjukkan keberhasilan, dan string tidak kosong menunjukkan beberapa jenis kegagalan. Ini bisa diterapkan dengan main
mengembalikan char*
hasil.
Dan tentu saja mungkin untuk mengimplementasikan sistem dengan status float
atau double
keluar.
Jadi mengapa int
? Ini hanya masalah konvensi - dan ada nilai yang luar biasa dalam memiliki sistem operasi dan program yang berjalan di bawah mereka mematuhi konvensi umum.
Konvensi Unix adalah menggunakan kode status integer, dengan 0 menunjukkan keberhasilan dan kegagalan bukan-nol (karena biasanya hanya ada satu cara untuk berhasil, tetapi banyak cara untuk gagal). Saya tidak tahu apakah konvensi itu berasal dari Unix; Saya menduga itu berasal dari sistem operasi sebelumnya.
Floating-point akan menjadi konvensi yang lebih sulit, karena (a) dukungan floating-point tidak universal, (b) lebih sulit untuk mendefinisikan pemetaan antara nilai-nilai floating-point dan kondisi kesalahan, (c) sistem yang berbeda menggunakan floating-point yang berbeda. representasi titik, dan (d) bayangkan kesenangan melacak kesalahan pembulatan dalam status keluar program Anda. Integer, di sisi lain, cocok untuk menghitung kode kesalahan.
Plan 9, seperti yang saya sebutkan, menggunakan string, tetapi memaksakan beberapa kompleksitas untuk manajemen memori, pengkodean karakter, dll. Sejauh yang saya tahu, ide baru ketika Plan 9 mengimplementasikannya, dan itu tidak menggantikan yang sudah ada konvensi yang luas.
(Kebetulan, di C ++ hanyamain
bisa kembali , dan di C hanya diizinkan jika kompiler secara khusus mendukungnya. Banyak kompiler tidak mengeluh dengan sangat keras jika Anda menulis , tetapi hanya sedikit berlebihan untuk mengatakan bahwa itu salah .)int
void main
void main