【发布时间】:2015-11-19 13:24:33
【问题描述】:
据我了解,如果 main 函数返回 0,这表明程序总是成功终止。即使成功由另一个 int 值指示。
如果 main 返回一个非零值,如果这代表不成功的程序终止或另一个错误代码,则它是特定于实现的
如果
status的值为零或EXIT_SUCCESS,则 状态成功终止的实现定义形式是 回来。如果status的值为EXIT_FAILURE,则 状态的实现定义形式不成功终止 被退回。否则返回的状态为 实现定义。)
所以在 C 标准中只定义了成功(返回 0),而不是如何解释非零 int 值,对吗?例如。如果在某个系统中 1 代表“成功”,则返回 0 也会交付 1 吗?这是怎么做到的?
【问题讨论】:
-
标准定义了它的作用,仅此而已。那是如何实现的,这超出了标准的范围。尽管在 Unixoids 和 Windows 下,它是一个身份映射(mod 256)。
-
密切相关:stackoverflow.com/q/8867871/827263(我不确定它是否完全重复)。
-
语言标准不能轻易定义操作系统应该如何处理返回值。有些系统根本不关心返回什么,而 C 标准对此无能为力。