EXIT_FAILURE
,或者在main
的返回语句中,或者作为参数到exit()
,是唯一指示C或C++程序中的故障的可移植方法.例如,exit(1)
实际上可以在虚拟机上发出成功终止的信号.
如果你打算在程序失败时使用EXIT_FAILURE
,那么为了对称起见,在程序成功时也可以使用EXIT_SUCCESS
.
另一方面,如果程序从未发出失败信号,则可以使用0
或EXIT_SUCCESS
.这两个都是由标准保证的,以表示成功完成.(EXIT_SUCCESS
几乎不可能有一个非0的值,但在我听说过的每个实现中,它都等于0.)
使用0
的优点是,C中不需要#include <stdlib.h>
,或者C++中有#include <cstdlib>
个(如果使用return
语句而不是调用exit()
),但是对于任何显著大小的程序,不管怎样,您将直接或间接地包括STDLIB.
在这方面,在C中从1999标准开始,在C++的所有版本中,达到main()
结尾都会有一个隐式return 0;
,所以您可能不需要明确地使用0
或EXIT_SUCCESS
.(但至少在C,我认为一个明确的return 0;
是更好的风格.)
(有人问起OpenVMS.我已经很久没有使用它了,但我记得奇数状态值通常表示成功,偶数值表示失败.C实现将0
映射到1
,因此return 0;
表示成功终止.其他值传递不变,因此return 1;
也表示成功终止.EXIT_FAILURE
将具有非零偶数值.)