有什么区别?哪个是首选,或者何时应该分别使用每个?
答案 0 :(得分:53)
exit(1)
(通常)表示终止失败。但是,它的使用是不可移植的。例如,在OpenVMS上,exit(1)
实际上表示成功。
只有EXIT_FAILURE
是返回不成功终止的标准值,但1
在许多实现中都使用EXIT_FAILURE
。
总结一下:
如果你想编写完全可移植的代码,
exit(0)
表示失败案例。虽然,
您可以使用EXIT_SUCCESS
或EXIT_SUCCESS
来表示成功案例。
请注意,0
或exit
都相同。
参考:
C99标准:7.20.4.3 zero
功能
第5段
最后,控制权返回给主机环境。如果状态值为
EXIT_SUCCESS
或EXIT_FAILURE
,状态成功终止的实现定义形式 回。如果状态值为{{1}},则为实现定义形式 返回状态不成功的终止。否则返回的状态是 实施德音响定义
答案 1 :(得分:11)
对于真正可移植的代码,首选EXIT_FAILURE
。 C标准仅定义了三个值的含义:EXIT_FAILURE
,0
和EXIT_SUCCESS
(0
和EXIT_SUCCESS
基本上是同义词。)
从实际角度来看,大多数典型系统也接受其他值。如果内存服务,Linux将允许您返回任何8位值和Windows 16位值。除非您真诚地关心移植到IBM大型机,VMS等,否则您可能不关心大多数不支持至少8位返回值的系统。
答案 2 :(得分:4)
使用EXIT_FAILURE
。它是整个操作系统中使用的常量。它的值可能不是1而且在代码中更具描述性。
答案 3 :(得分:1)
某些程序应该返回哪些状态值的约定。最常见的约定是0表示成功,1表示失败。执行比较的程序使用不同的约定:它们使用状态1表示不匹配,而状态2表示无法比较。如果现有的约定对它有意义,你的程序应该遵循现有的约定。
某些非POSIX系统对退出状态使用不同的约定 值。
For greater portability
,您可以使用宏EXIT_SUCCESS
和EXIT_FAILURE
表示成功的传统状态值 失败,分别。它们在文件stdlib.h中声明。
答案 4 :(得分:0)
不仅VMS有自己的规则,AmigaDOS还将5以下的返回码定义为可以。