0

我写了一个简单的案例来看看我的系统如何处理来自 main 的故障指示器。但是什么也没发生。我真的很想知道 return 0 和 return -1 有什么区别。

int main()
{
    return -1;
}
4

5 回答 5

3

这取决于你的“系统”是什么。如果你只是运行一个程序,那么这个值会被忽略。

唯一使用此功能的情况是,如果您的程序是较大工作流程的一部分,您的程序的失败很重要。例如,如果其中一个步骤出现故障,makefile(或 C++ IDE)将停止构建程序。此故障由来自 的错误代码表示main()

于 2013-09-30T02:48:23.953 回答
1

大多数时候, main 中的返回值是没有用的,传统上我们返回 0 表示程序成功,尤其是在 Windows 中。但是在Linux中,我们经常有一个程序链,这意味着第二个程序的状态取决于第一个程序的结果。那个时候,返回值有它的位置。

所以,不管返回值是多少,大多数时候它取决于你的设计,它对系统没有任何意义。

希望能帮到你。

于 2013-09-30T03:00:24.660 回答
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
于 2013-09-30T04:31:02.513 回答
0

的返回值main()可用:

  1. 对于外壳,如果外壳启动它,$status等等,取决于您使用的外壳。

  2. status通过参数指向的变量到启动它的程序wait()。见man 2 wait()

GNU 与它完全无关。

于 2013-09-30T03:42:15.573 回答
0

如果使用 bash shell(或类似的),您可以显示使用echo $?. 示例 bash 终端会话:

$false
$echo $?
1
$true
$echo $?
0
$

在其他系统上,返回值的访问方式不同。在 DOS 或 Windows 上,可以使用 ERRORLEVEL 命令或 %ERRORLEVEL% 变量检查返回值。

于 2013-09-30T05:45:10.637 回答