相关疑难解决方法(0)


我应该从main()返回EXIT_SUCCESS还是0?

这是一个简单的问题,但我一直看到相互矛盾的答案:C++程序的主程序应该返回0还是EXIT_SUCCESS?

#include <cstdlib>
int main(){return EXIT_SUCCESS;}
Run Code Online (Sandbox Code Playgroud)

要么

int main(){return 0;}
Run Code Online (Sandbox Code Playgroud)

它们是完全相同的吗?应该EXIT_SUCCESS只与exit()?一起使用?

我认为EXIT_SUCCESS这是一个更好的选择,因为其他软件可能想要将零视为失败,但我也听说如果你返回0,编译器无论如何都能够将它改为不同的值.

c c++ program-entry-point return-value

107
推荐指数
4
解决办法
10万
查看次数

ExitCodes大于255,可能吗?

如果是,在哪个操作系统,shell或其他什么?

考虑下面的java程序(我只是以java为例,任何语言对这个问题都有好处,更多的是关于操作系统):

public class ExitCode {
    public static void main(String args[]) {
        System.exit(Integer.parseInt(args[0]));
    }
}
Run Code Online (Sandbox Code Playgroud)

在Linux和bash上运行它,它总是返回不等于255的值,例如(echo $?打印上一个执行命令的退出代码)

> java ExitCode 2; echo $?
2

> java ExitCode 128; echo $?
128

> java ExitCode 255; echo $?
255

> java ExitCode 256; echo $?
0

> java ExitCode 65536; echo $?
0
Run Code Online (Sandbox Code Playgroud)

编辑:下面的(只有,到目前为止)答案完全解释了在UNIX上发生的事情.我仍然想知道其他操作系统.

shell operating-system exit-code

32
推荐指数
2
解决办法
1万
查看次数