我写了一个简单的案例,看看我的系统如何处理来自main的故障指示器。 但什么都没发生。我真的想知道return 0和return -1之间的区别。
int main()
{
return -1;
}
答案 0 :(得分:3)
这取决于你的“系统”是什么。如果您只是运行程序,则忽略该值。
唯一一次使用它的方法是,如果您的程序是程序失败的重要工作流程的一部分。例如,如果其中一个步骤出现故障,makefile(或C ++ IDE)将停止构建程序。来自main()
的错误代码表示此失败。
答案 1 :(得分:1)
大多数时候,main中的返回值没有用,传统上,我们返回0表示程序成功,特别是在Windows中。但是在Linux中,我们经常有一系列程序,这意味着第二个程序的状态取决于第一个程序的结果。那时,返回值有其位置。
所以,无论返回值是多少,大多数时候它取决于你的设计,对系统来说没有任何意义。
希望能帮到你。
答案 2 :(得分:1)
假设您已经编译了一个名为a.out的可执行文件,请考虑:
$ ./a.out # ignore the value returned from main
$ ./a.out && echo success # check the value returned from main
$ ./a.out || echo failure
在第二种和第三种情况下,仅当a.out
成功或不成功时才会发生回声,其中成功被定义为从main返回零。这是一种使用以下语法可以更清晰的约定:
if ./a.out; then
echo a.out returned zero from main
else
echo a.out returned non-zero from main
fi
答案 3 :(得分:0)
main()
的返回值可用:
对于shell,如果shell启动它,则为$status
等,具体取决于您正在使用的shell。
通过status
参数指向的wait()
变量,启动它的程序。请参阅man 2 wait()。
GNU对它毫无用处。
答案 4 :(得分:0)
如果使用bash shell(或类似),则可以显示使用echo $?
执行的最后一个命令的返回值。样本bash终端会话:
$false
$echo $?
1
$true
$echo $?
0
$
在其他系统上,将以不同方式访问返回值。在DOS或Windows上,可以使用ERRORLEVEL命令或%ERRORLEVEL%变量检查返回值。