นี่คือเรื่องราวที่ไม่มีวันสิ้นสุดซึ่งสะท้อนให้เห็นถึงขีด จำกัด (ตำนาน) ของ
สิ่งที่โปรแกรมควรส่งคืนเพื่อบ่งชี้ "ความสำเร็จ" ควรกำหนดโดยผู้ที่ได้รับค่า (ระบบปฏิบัติการหรือกระบวนการที่เรียกใช้โปรแกรม) ไม่ใช่ตามข้อกำหนดภาษา
แต่โปรแกรมเมอร์ชอบเขียนโค้ดด้วยวิธี "แบบพกพา" และด้วยเหตุนี้พวกเขาจึงคิดค้นแบบจำลองของตัวเองสำหรับแนวคิด "ระบบปฏิบัติการ" ที่กำหนดค่าเชิงสัญลักษณ์เพื่อส่งกลับ
ตอนนี้ในสถานการณ์แบบกลุ่มต่อกลุ่ม (หลายภาษาใช้ในการเขียนโปรแกรมไปยังระบบต่างๆ) ความสอดคล้องระหว่างแบบแผนภาษาสำหรับ "ความสำเร็จ" และระบบปฏิบัติการ (ซึ่งไม่มีใครสามารถให้สิทธิ์เหมือนกันได้เสมอไป) ได้รับการจัดการโดยการใช้งานไลบรารีเฉพาะสำหรับแพลตฟอร์มเป้าหมายเฉพาะ
แต่ - น่าเสียดาย - แนวคิดเหล่านี้ซึ่งไม่ชัดเจนในเวลาที่ใช้ภาษา C (ส่วนใหญ่จะเขียนเคอร์เนล UNIX) และ Gigagrams ของหนังสือที่เขียนโดยพูดว่า "return 0 หมายถึงความสำเร็จ" เนื่องจากเป็นจริงบน OS ที่ เวลานั้นมีคอมไพเลอร์ C
จากนั้นเป็นต้นมาไม่เคยมีการกำหนดมาตรฐานที่ชัดเจนว่าควรจัดการกับการติดต่อดังกล่าวอย่างไร C และ C ++ มีคำจำกัดความของ "return values" แต่ไม่มีใครให้การแปล OS ที่ถูกต้อง (หรือดีกว่า: ไม่มีเอกสารประกอบคอมไพเลอร์พูดอะไรเกี่ยวกับเรื่องนี้) 0 หมายถึงความสำเร็จหากเป็นจริงสำหรับ UNIX - LINUX และ - ด้วยเหตุผลอิสระ - สำหรับ Windows เช่นกันและสิ่งนี้ครอบคลุม 90% ของ "คอมพิวเตอร์สำหรับผู้บริโภค" ที่มีอยู่ซึ่งโดยส่วนใหญ่แล้วจะไม่คำนึงถึงค่าที่ส่งคืน (ดังนั้นเราจึงสามารถ พูดคุยกันมาหลายทศวรรษแล้วไม่มีใครจะสังเกตเห็น!)
ในสถานการณ์นี้ก่อนที่จะตัดสินใจให้ถามคำถามเหล่านี้: - ฉันสนใจที่จะสื่อสารบางอย่างกับผู้โทรเกี่ยวกับที่มีอยู่หรือไม่ (ถ้าฉันส่งคืน 0 เสมอ ... ไม่มีเงื่อนงำเบื้องหลังทุกอย่าง) - ผู้โทรของฉันมีการประชุมเกี่ยวกับการสื่อสารนี้หรือไม่? (โปรดทราบว่าค่าเดียวไม่ใช่แบบแผนซึ่งไม่อนุญาตให้นำเสนอข้อมูลใด ๆ )
หากคำตอบทั้งสองข้อนี้ไม่ใช่ทางออกที่ดีก็คืออย่าเขียนข้อความส่งคืนหลักเลย (และปล่อยให้คอมไพเลอร์ตัดสินใจในส่วนที่เกี่ยวกับเป้าหมายกำลังทำงานอยู่)
หากไม่มีการประชุมใด ๆ 0 = ความสำเร็จเป็นไปตามสถานการณ์ส่วนใหญ่ (และการใช้สัญลักษณ์อาจเป็นปัญหาได้หากพวกเขาแนะนำการประชุม)
หากมีการจัดรูปแบบให้แน่ใจว่าได้ใช้ค่าคงที่เชิงสัญลักษณ์ที่สอดคล้องกัน (และตรวจสอบให้แน่ใจว่ามีการเชื่อมโยงกันตามแบบแผนไม่ใช่การเชื่อมโยงกันของค่าระหว่างแพลตฟอร์ม)