Eh, olabilir .
Örneğin, Plan 9 işletim sisteminde kullanılan C lehçesinde main
normal olarak bir void
işlev olarak bildirilir , ancak çıkış durumu exits()
işleve bir dize işaretçisi geçirilerek çağrı ortamına döndürülür . Boş dize başarısını gösterir ve boş olmayan herhangi bir dize bir tür başarısızlığı belirtir. Bu olabilir alarak uygulanmıştır main
bir dönüş char*
sonucu.
Ve o kesinlikle bir bir sistemi uygulamak mümkün olacağını float
veya double
çıkış durumuna.
Neden Yani int
? Bu sadece bir kongre meselesi - ve işletim sistemleri ve altlarında çalışan programların ortak bir kongreye uyması konusunda muazzam bir değer var .
Unix kuralı, bir tamsayı durum kodu kullanmaktır, 0 ile ifade edilen başarı ve sıfır olmayan ifade ile başarısızlık (tipik olarak başarılı olmanın sadece bir yolu var, ancak başarısız olmanın birden fazla yolu var). Bu konvansiyonun Unix’le mi yapıldığını bilmiyorum; Daha önceki işletim sistemlerinden geldiğinden şüpheleniyorum.
Kayan nokta daha zor bir kongredir, çünkü (a) kayan nokta desteği evrensel değildir, (b) kayan nokta değerleri ile hata koşulları arasında bir harita tanımlamak daha zordur, (c) farklı sistemler farklı kayan nokta kullanırlar. nokta gösterimleri ve (d) yalnızca programınızın çıkış durumundaki bir yuvarlama hatasını izlemenin eğlenceli olduğunu hayal edin. Öte yandan, tam anlamıyla hata kodlarının numaralandırılması için tam anlamıyla ödünç verenler kendilerini çok iyi ödünç veriyor.
Bahsettiğim gibi, Plan 9, dizeleri kullanır, ancak bu, bellek yönetimi, karakter kodlaması, vb. İçin biraz karmaşıklık getirir. Bildiğim kadarıyla, Plan 9'un uyguladığı zaman yeni bir fikirdi ve mevcut olanın yerine geçmedi. yaygın kongre.
(Bu arada, C ++ ' main
da yalnızca geri dönebilir int
ve C'ye void main
yalnızca derleyici özel olarak destekliyorsa izin verilir. Birçok derleyici yazdığınızda yüksek sesle şikayet etmez void main
, ancak bunun yanlış olduğunu söylemek çok hafif bir abartıdır .)