1

可能重复:
(C/C++)从 main 返回 EXIT_SUCCESS 或 0?

很长一段时间我都在使用 return 0;,从我开始使用 allegro 开始。比我遇到 C++ 书并找到有关 EXIT_SUCCESS 的信息,比我查看定义它的 stdlib.h 或 cstdlib 并且只有两行:

#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1

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

4

2 回答 2

7

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

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

最后,控制权返回到主机环境。如果 的值为status0 或 ,则返回成功终止EXIT_SUCCESS状态的实现定义形式。如果值为 ,则返回状态未成功终止的实现定义形式。否则返回的状态是实现定义的。statusEXIT_FAILURE

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

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

于 2012-11-02T21:48:06.977 回答
1

EXIT_SUCCESS并且EXIT_FAILURE是在stdlib.h. C 没有指定这些宏的值。

POSIX 要求EXIT_SUCCESS0. (但没有指定任何EXIT_FAILURE价值)。

于 2012-11-02T21:44:17.107 回答