Đây là một câu chuyện không bao giờ kết thúc phản ánh các giới hạn (một huyền thoại) về "khả năng tương tác và tính di động trên tất cả".
Những gì chương trình sẽ trả về để biểu thị "thành công" phải được xác định bởi người đang nhận giá trị (Hệ điều hành hoặc quá trình gọi chương trình) không phải bằng một đặc tả ngôn ngữ.
Nhưng các lập trình viên thích viết mã theo "cách di động" và do đó họ phát minh ra mô hình của riêng họ cho khái niệm "hệ điều hành" xác định các giá trị tượng trưng để trả về.
Bây giờ, trong một kịch bản nhiều-nhiều (trong đó nhiều ngôn ngữ phục vụ để viết chương trình cho nhiều hệ thống), sự tương ứng giữa quy ước ngôn ngữ cho "thành công" và hệ điều hành (mà không ai có thể luôn luôn giống nhau) nên được xử lý bằng cách triển khai cụ thể của một thư viện cho một nền tảng đích cụ thể.
Nhưng - thật không may - những khái niệm này không rõ ràng vào thời điểm ngôn ngữ C được triển khai (chủ yếu để viết kernel UNIX) và Gigagram của những cuốn sách được viết bằng cách nói "return 0 có nghĩa là thành công", vì điều đó đúng trên HĐH thời điểm đó có một trình biên dịch C.
Từ đó trở đi, không có tiêu chuẩn hóa rõ ràng nào được thực hiện về cách xử lý một sự tương ứng như vậy. C và C ++ có định nghĩa riêng về "giá trị trả về" nhưng không ai cấp một bản dịch hệ điều hành phù hợp (hoặc tốt hơn: không có tài liệu biên dịch nào nói gì về nó). 0 có nghĩa là thành công nếu đúng với UNIX - LINUX và - vì các lý do độc lập - đối với Windows, và điều này bao gồm 90% "máy tính tiêu dùng" hiện tại, trong hầu hết các trường hợp - bỏ qua giá trị trả về (vì vậy chúng ta có thể thảo luận trong nhiều thập kỷ, không ai sẽ nhận thấy!)
Trong kịch bản này, trước khi đưa ra quyết định, hãy hỏi những câu hỏi sau: - Tôi có muốn giao tiếp với người gọi về người hiện tại của tôi không? (Nếu tôi luôn luôn trả về 0 ... không có manh mối đằng sau tất cả mọi thứ) - Người gọi của tôi có những quy ước về giao tiếp này không? (Lưu ý rằng một giá trị không phải là quy ước: không cho phép bất kỳ biểu diễn thông tin nào)
Nếu cả hai câu trả lời này là không, có lẽ giải pháp tốt là không viết câu trả lời chính nào cả. (Và để trình biên dịch quyết định, liên quan đến mục tiêu đang hoạt động).
Nếu không có quy ước nào ở vị trí 0 = thành công đáp ứng hầu hết các tình huống (và sử dụng các biểu tượng có thể có vấn đề, nếu họ đưa ra một quy ước).
Nếu có các quy ước, đảm bảo sử dụng các hằng số tượng trưng gắn kết với chúng (và đảm bảo sự gắn kết quy ước, không phải là sự gắn kết giá trị, giữa các nền tảng).