很长一段时间我一直在使用return 0;,从我开始使用allegro开始。比我遇到过关于EXIT_SUCCESS的C ++书籍,而不是我查看stdlib.h或cstdlib,它定义了它,只有两行:
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
有人可以向我解释一下吗?我正在使用最后一个devc ++ 4.9.9.2的mingw版本。
答案 0 :(得分:7)
C99语言标准定义了两个宏EXIT_SUCCESS
和EXIT_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_SUCCESS
和EXIT_FAILURE
是stdlib.h
中定义的标准C宏。 C没有指定这些宏的值。
POSIX要求EXIT_SUCCESS
为0
。 (但没有为EXIT_FAILURE
值指定任何内容。)