【发布时间】:2012-10-23 14:19:07
【问题描述】:
很长一段时间我都在使用 return 0;,从我开始使用 allegro 开始。比我看到 C++ 书并找到关于 EXIT_SUCCESS 的信息,比我查看 stdlib.h 或 cstdlib 的定义要多,而且只有两行:
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
有人可以向我解释一下吗?我正在使用最后一个 devc++ 4.9.9.2 的 mingw 版本。
【问题讨论】:
-
要解释什么?您通常应该从
main返回 0 以指示成功和任何其他失败值。 -
您可以使用其中任何一种,但是除非您使用 EXIT_FAILURE,否则没有标准的失败退出方式。见stackoverflow.com/questions/8867871/…
-
@chris
0表示成功,但除了EXIT_FAILURE和EXIT_SUCCESS之外没有其他要求。即使在普通系统中:在 Unix 下,256将被视为成功(因为操作系统只保留低位 8 位),而在其他系统中,没有限制:负值或奇数是失败,或者......当然还有:Unix 和 Windows 只是将这个值传递给调用程序。它按照自己的意愿解释它。 C++ 可以在这里表达一个意图,但是调用你的程序的程序不受 C++ 标准的约束。 -
@JamesKanze,是的,我应该更清楚。我是在一个调用你的程序的上下文中谈论的。按照惯例,零是成功,我不能谈论太多关于其他操作系统的经验,但 Windows 通常是失败的任何其他价值。
-
@chris 别担心。我有点迂腐。但事实上,C++标准只能规定C++,而其中涉及与外部环境交互的一切,实际上只能作为标准中的意图,因为C++标准不能规定外部环境。例如,它不能阻止我编写一个脚本来测试
$? = 3是否确定程序已经成功。 (但这显然 不是 Unix 世界的惯例。)
标签: c++ c return std exit-code