所有程序都必须有返回值吗?

Do all programs have to have a return value?

提问人:OMGtechy 提问时间:9/4/2013 最后编辑:OMGtechy 更新时间:3/9/2014 访问量:212

问:

我目前正在编写自己的编程语言,主要用于教育目的。

在编写一个简单的hello world示例时,我意识到许多编程语言采用以下形式:

write "hello world" to the console
return 0
  • 所有程序都必须以某种方式返回整数吗?
  • 做那些不做的人 显式要求您声明返回值,隐式返回 0 无论如何?
  • 这在流行的操作系统之间是否发生了变化,基于 Windows NT、Linux 内核还是 Mac OS Xs 内核?
  • 如果是这样,为什么?

我不确定该把这个问题标记为什么,当然,任何帮助都是值得赞赏的。

与语言无关的 编码式 操作系统

评论

1赞 Daniel Williams 9/4/2013
我相信这些通常是 0 = 成功。其他任何事情都是错误。例如,在 Windows 中,你有 msdn.microsoft.com/en-us/library/windows/desktop/...,在 Linux 中,你有 stackoverflow.com/questions/1101957/...。还 en.wikipedia.org/wiki/Exit_status
0赞 OMGtechy 9/4/2013
@DanielWilliams我也这么认为,但是它是否必须返回一些东西,或者如果它不返回,它会违反某些流行操作系统的要求吗?
0赞 Daniel Williams 9/4/2013
我认为要完全正常运行,您的程序应该返回退出状态。如果没有,它可能默认为 0。
0赞 OMGtechy 9/4/2013
@DanielWilliams我再次同意,这是我试图解决的“可能”部分。谢谢你,虽然:)
1赞 Mark Ransom 9/4/2013
如果 OS 指定必须提供返回值,则必须提供返回值。这是唯一重要的答案。

答:

1赞 piotrek 2/18/2014 #1

这是一个特定于操作系统的问题,因此没有人可以回答它是否适用于所有操作系统。也就是说,我相信,在任何合理的操作系统中,是的 - 程序必须有一个返回值。

为什么?链接程序执行,从而报告问题、重新启动等。 没有不返回值的程序,它只是一个编译器,它对程序员隐藏了它。

所有主要操作系统都是这种情况吗?可能。0 通常意味着成功,但你不应该在编写程序时做出这样的假设;使用语言常量。

如果您编写自己的语言,则可以将错误代码(异常、终止原因)映射到主机语言的错误代码。