我写了一个简单的案例来看看我的系统如何处理来自 main 的故障指示器。但是什么也没发生。我真的很想知道 return 0 和 return -1 有什么区别。
int main()
{
return -1;
}
这取决于你的“系统”是什么。如果你只是运行一个程序,那么这个值会被忽略。
唯一使用此功能的情况是,如果您的程序是较大工作流程的一部分,您的程序的失败很重要。例如,如果其中一个步骤出现故障,makefile(或 C++ IDE)将停止构建程序。此故障由来自 的错误代码表示main()
。
大多数时候, main 中的返回值是没有用的,传统上我们返回 0 表示程序成功,尤其是在 Windows 中。但是在Linux中,我们经常有一个程序链,这意味着第二个程序的状态取决于第一个程序的结果。那个时候,返回值有它的位置。
所以,不管返回值是多少,大多数时候它取决于你的设计,它对系统没有任何意义。
希望能帮到你。
假设您已经编译了一个名为 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
的返回值main()
可用:
对于外壳,如果外壳启动它,$status
等等,取决于您使用的外壳。
status
通过参数指向的变量到启动它的程序wait()
。见man 2 wait()。
GNU 与它完全无关。
如果使用 bash shell(或类似的),您可以显示使用echo $?
. 示例 bash 终端会话:
$false
$echo $?
1
$true
$echo $?
0
$
在其他系统上,返回值的访问方式不同。在 DOS 或 Windows 上,可以使用 ERRORLEVEL 命令或 %ERRORLEVEL% 变量检查返回值。