EXIT_SUCCESS和EXIT_FAILURE。是编译一次运行或编写一次编译到处?

时间:2012-11-02 21:42:10

标签: c++ c return std exit-code

  

可能重复:
  (C/C++) return EXIT_SUCCESS or 0 from main?

很长一段时间我一直在使用return 0;,从我开始使用allegro开始。比我遇到过关于EXIT_SUCCESS的C ++书籍,而不是我查看stdlib.h或cstdlib,它定义了它,只有两行:

#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1

有人可以向我解释一下吗?我正在使用最后一个devc ++ 4.9.9.2的mingw版本。

2 个答案:

答案 0 :(得分:7)

C99语言标准定义了两个宏EXIT_SUCCESSEXIT_FAILURE以扩展为“可用作参数的整数常量表达式” exit函数分别返回不成功或成功的终止状态 主机环境“(§7.20/ 3)。

exit函数(第7.20.4.3 / 5节)的描述中,它还说:

  

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

因此,如果以0或EXIT_SUCCESS退出,则始终意味着“成功终止”到主机环境。 EXIT_FAILURE是一个始终意味着“终止失败”的值,但除了那些之外的任何非零值都不能保证是可移植的。

请注意,从main返回等同于调用状态为返回值的exit函数(第5.1.2.2.3节)。

答案 1 :(得分:1)

EXIT_SUCCESSEXIT_FAILUREstdlib.h中定义的标准C宏。 C没有指定这些宏的值。

POSIX要求EXIT_SUCCESS0。 (但没有为EXIT_FAILURE值指定任何内容。)