Bu, "birlikte çalışabilirlik ve her yerde taşınabilirlik" in sınırlarını (bir efsane) yansıtan bitmeyen bir hikaye.
Programın "başarı" yı belirtmek için ne döndürmesi gerektiği, bir dil belirtimine göre değil, değeri kimin aldığına (İşletim sistemi veya programı çalıştıran işlem) göre tanımlanmalıdır.
Ancak programcılar "taşınabilir yolla" kod yazmayı severler ve bu nedenle geri dönecek sembolik değerleri tanımlayan "işletim sistemi" kavramı için kendi modellerini icat ederler.
Şimdi, çoktan çoğa bir senaryoda (birçok dilin birçok sisteme program yazmaya hizmet ettiği), "başarı" için dil geleneği ile işletim sistemi arasındaki yazışma (hiç kimsenin her zaman aynı olmasını sağlayamayacağı) belirli bir hedef platform için bir kütüphanenin özel uygulamasıyla ele alınacaktır.
Ancak - ne yazık ki - C dilinin konuşlandırıldığı sırada o kadar net olmayan bu kavramlar (esas olarak UNIX çekirdeğini yazmak için) ve "dönüş 0 başarı anlamına gelir" diyerek yazılan kitapların Gigagramları, çünkü bu, işletim sistemi için geçerliydi. o zaman bir C derleyicisine sahip.
O andan itibaren, böyle bir yazışmanın nasıl ele alınması gerektiğine dair net bir standardizasyon yapılmadı. C ve C ++ 'nın kendi "dönüş değerleri" tanımı vardır, ancak hiç kimse uygun bir işletim sistemi çevirisi sağlamaz (veya daha iyisi: hiçbir derleyici dokümantasyonu bu konuda bir şey söylemez). 0 UNIX için doğruysa başarı anlamına gelir - LINUX ve -bağımsız nedenlerden dolayı- Windows için de ve bu, mevcut "tüketici bilgisayarlarının"% 90'ını kapsar, çoğu durumda - dönüş değerini göz ardı eder (böylece yapabiliriz onlarca yıldır tartışın, ama kimse fark etmeyecek!)
Bu senaryonun içinde, bir karar vermeden önce şu soruları sorun: - Arayan kişiye mevcut durumum hakkında bir şey iletmek ister miyim? (Eğer her zaman 0 döndürürsem ... her şeyin arkasında hiçbir ipucu yoktur) - Arayanın bu iletişimle ilgili kuralları var mı? (Tek bir değerin herhangi bir bilgi temsiline izin vermeyen bir kural olmadığını unutmayın)
Bu yanıtların her ikisi de hayır ise, muhtemelen iyi çözüm ana dönüş ifadesini hiç yazmamaktır. (Ve derleyicinin hedefe göre çalıştığına karar vermesine izin verin).
Hiçbir kural mevcut değilse 0 = başarı durumların çoğunu karşılar (ve sembollerin kullanılması, eğer bir kural ortaya koyarlarsa sorunlu olabilir).
Kurallar yürürlükteyse, onlarla tutarlı olan sembolik sabitlerin kullanıldığından emin olun (ve platformlar arasında değer tutarlılığını değil, kural tutarlılığını sağlayın).