Це нескінченна історія, яка відображає межі (міф) "сумісності та портативності для всіх".
Те, що програма повинна повернути для позначення "успіху", має визначатися тим, хто отримує значення (Операційна система або процес, який викликав програму), не мовою.
Але програмісти люблять писати код "переносним способом", і тому вони вигадують власну модель для концепції "операційної системи", визначаючи символьні значення для повернення.
Тепер у сценарії "багато-до-багатьох" (де багато мов служать для запису програм у багато систем) відповідність між мовною конвенцією для "успіху" та однією операційною системою (яку ніхто не може дати завжди бути однаковою) повинна повинні оброблятися конкретною реалізацією бібліотеки для певної цільової платформи.
Але - на жаль - це поняття, де на час розгортання мови C не було зрозуміло (головним чином для написання ядра UNIX), і гігаграми книг, де написано висловом "return 0 означає успіх", оскільки це було правдою в ОС на того часу мав компілятор С.
Відтоді не було зроблено чіткої стандартизації щодо того, як слід вести таку кореспонденцію. C і C ++ мають власне визначення поняття "повернення значень", але ніхто не надає належного перекладу ОС (а ще краще: жодна документація компілятора нічого про це не говорить). 0 означає успіх, якщо це справедливо і для UNIX - LINUX та - для незалежних причин - і для Windows, і це охоплює 90% існуючих "споживчих комп'ютерів", що - у більшості випадків - не враховує повернутого значення (тому ми можемо обговорюйте десятиліттями, бо ніхто ніколи не помітить!)
У цьому сценарії, перш ніж приймати рішення, задайте наступні питання: - Чи зацікавлений я щось повідомити своєму абонентові про існуючий? (Якщо я завжди завжди повертаю 0 ... немає жодної підказки за всім) - Чи мій абонент має умови про це спілкування? (Зауважте, що одне значення не є умовою: це не дозволяє подати інформацію)
Якщо обох відповіді немає, напевно, хорошим рішенням є взагалі не писати основну заяву про повернення. (І дозвольте компілятору прийняти рішення стосовно цілі, над якою працює).
Якщо не існує умовних умов 0 = успіх відповідає більшості ситуацій (а використання символів може бути проблематичним, якщо вони вводять умову).
Якщо конвенції існують, переконайтеся, що використовуються символічні константи, когерентні їм (і забезпечте узгодженість конвенції, а не цілісну когерентність між платформами).