EXIT_FAILURE vs退出(1)?

tem*_*ame 52 c exit

有什么不同?哪个是首选,或者何时应该分别使用每一个?

Alo*_*ave 57

exit(1)(通常)表示终止失败.但是,它的使用是不可移植的.例如,在OpenVMS上,exit(1)实际上表示成功.

EXIT_FAILURE返回不成功终止的标准值,但1在许多实现中用于相同的标准值.


总结一下:
如果要编写完全可移植的代码使用,

EXIT_FAILURE对于失败案例.虽然,
您可以使用任何一个exit(0)EXIT_SUCCESS成功案例.

请注意,EXIT_SUCCESS0两者都相同.


参考:

C99标准:7.20.4.3 exit功能
第5段

最后,控制权返回给主机环境.如果status的值为zeroEXIT_SUCCESS,则返回状态成功终止的实现定义形式.如果status的值为EXIT_FAILURE,则返回状态为不成功终止的实现定义形式.否则返回的状态是实现定义的.

  • 还使代码中的`exit`函数更具描述性. (4认同)
  • 答案说明:"EXIT_FAILURE`表示非故障情况." 你的意思是:"`EXIT_FAILURE`用于失败案例?" (3认同)

Jer*_*fin 11

对于真正的可移植代码,EXIT_FAILURE是首选.C标准仅定义意为三个值:EXIT_FAILURE,0,及EXIT_SUCCESS(具有0EXIT_SUCCESS基本上同义).

从实际角度来看,大多数典型系统也接受其他值.如果内存服务,Linux将允许您返回任何8位值和Windows 16位值.除非您真诚地关心移植到IBM大型机,VMS等,否则您可能不关心大多数不支持至少8位返回值的系统.


Ed *_*eal 5

使用EXIT_FAILURE. 它是在整个操作系统中使用的常量。它的值可能不是 1,而且它在代码中更具描述性。

  • @Aerovistae:`EXIT_FAILURE` 是由 C 标准指定的,自 1989 年以来一直存在。它可以在任何合理的现代 C 编译器上使用。它的值通常为“1”,但它始终是表示当前操作系统中程序执行失败的正确值。 (4认同)