gpt4 book ai didi

c++ - 我应该从 main() 返回 EXIT_SUCCESS 还是 0?

转载 作者:IT老高 更新时间:2023-10-28 11:55:15 25 4
gpt4 key购买 nike

这是一个简单的问题,但我一直看到相互矛盾的答案:C++ 程序的主例程应该返回 0 还是 EXIT_SUCCESS

#include <cstdlib>
int main(){return EXIT_SUCCESS;}

int main(){return 0;}

它们是完全一样的吗? EXIT_SUCCESS 应该只与 exit() 一起使用吗?

我认为 EXIT_SUCCESS 会是更好的选择,因为其他软件可能希望将零视为失败,但我也听说如果您返回 0,编译器可以无论如何将其更改为不同的值。

最佳答案

EXIT_FAILURE , 在 main 的返回语句中或作为 exit() 的参数, 是在 C 或 C++ 程序中指示失败的唯一可移植方式。 exit(1)例如,实际上可以在 VMS 上发出成功终止的信号。

如果您打算使用 EXIT_FAILURE当您的程序失败时,您不妨使用EXIT_SUCCESS当它成功时,只是为了对称。

另一方面,如果程序从不发出失败信号,您可以使用 0EXIT_SUCCESS .标准保证两者都表示成功完成。 (EXIT_SUCCESS 几乎不可能有 0 以外的值,但在我听说过的每个实现中它都等于 0。)

使用 0有一个小优势,你不需要#include <stdlib.h>在 C 中,或 #include <cstdlib>在 C++ 中(如果您使用的是 return 语句而不是调用 exit() )——但是对于任何重要规模的程序,无论如何您都将直接或间接地包含 stdlib。

就此而言,在从 1999 年标准开始的 C 和所有 C++ 版本中,到 main() 结尾做一个隐含的return 0;无论如何,所以你可能不需要使用 0EXIT_SUCCESS明确地。 (但至少在 C 语言中,我认为明确的 return 0; 是更好的风格。)

(有人问起 OpenVMS。我很久没用了,但我记得奇数状态值通常表示成功,偶数值表示失败。C 实现映射 01,所以return 0; 表示成功终止。其他值不变传递,因此 return 1; 也表示成功终止。EXIT_FAILURE 将有一个非零偶数值。)

关于c++ - 我应该从 main() 返回 EXIT_SUCCESS 还是 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8867871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com