Vâng, nó có thể .
Ví dụ, trong phương ngữ của C được sử dụng trong hệ điều hành Plan 9main
thường được khai báo là một void
hàm, nhưng trạng thái thoát được trả về môi trường gọi bằng cách chuyển một con trỏ chuỗi đến exits()
hàm. Chuỗi rỗng biểu thị thành công và bất kỳ chuỗi không trống nào biểu thị một số loại thất bại. Điều này có thể đã được thực hiện bằng cách main
trả lại một char*
kết quả.
Và chắc chắn sẽ có thể thực hiện một hệ thống có trạng thái thoát float
hoặc double
thoát.
Vậy tại sao int
? Nó chỉ là một vấn đề của hội nghị - và có một to lớn giá trị trong việc có hệ điều hành và các chương trình mà chạy theo họ tuân theo một quy ước chung.
Quy ước Unix là sử dụng mã trạng thái số nguyên, với 0 biểu thị thành công và thất bại biểu thị khác không (vì thông thường chỉ có một cách để thành công, nhưng nhiều cách để thất bại). Tôi không biết liệu quy ước đó có bắt nguồn từ Unix hay không; Tôi nghi ngờ nó đến từ các hệ điều hành trước đó.
Dấu phẩy động sẽ là một quy ước khó khăn hơn, bởi vì (a) hỗ trợ điểm nổi không phổ biến, (b) khó xác định ánh xạ giữa các giá trị dấu phẩy động và điều kiện lỗi, (c) các hệ thống khác nhau sử dụng các dấu phẩy động khác nhau biểu diễn điểm và (d) chỉ cần tưởng tượng niềm vui của việc theo dõi lỗi làm tròn trong trạng thái thoát chương trình của bạn. Mặt khác, các số nguyên cho vay rất tốt để liệt kê các mã lỗi.
Như tôi đã đề cập, Kế hoạch 9 sử dụng các chuỗi, nhưng điều đó đặt ra một số phức tạp cho việc quản lý bộ nhớ, mã hóa ký tự, v.v. Theo như tôi biết, đó là một ý tưởng mới khi Kế hoạch 9 thực hiện và nó không thay thế được hiện tại quy ước rộng rãi.
(Ngẫu nhiên, trong C ++ chỉmain
có thể quay lại và trong C chỉ được phép nếu trình biên dịch hỗ trợ cụ thể. Nhiều trình biên dịch không phàn nàn rất lớn nếu bạn viết , nhưng chỉ hơi cường điệu khi nói rằng nó sai .)int
void main
void main