【发布时间】:2010-04-14 13:25:15
【问题描述】:
我最近在使用 CODE::BLOCKS+mingw 编译器 如果我没有在程序末尾键入 return 0,我可以看到 main() 返回了一些整数,我了解到 main() 返回 0 推断程序执行成功。我没有发现我的代码有任何缺陷,为什么它返回一些整数?
其次 任何函数都将其值返回给其函数调用,main() 将其值返回到哪里?
【问题讨论】:
我最近在使用 CODE::BLOCKS+mingw 编译器 如果我没有在程序末尾键入 return 0,我可以看到 main() 返回了一些整数,我了解到 main() 返回 0 推断程序执行成功。我没有发现我的代码有任何缺陷,为什么它返回一些整数?
其次 任何函数都将其值返回给其函数调用,main() 将其值返回到哪里?
【问题讨论】:
C++ 标准规定,如果您没有显式返回值,编译器必须生成代码,就像您输入了一样:
return 0;
返回值的确切含义以及返回方式是特定于实现的。对于大多数操作系统,返回值成为进程的退出代码。
【讨论】:
main() 将其值返回给系统。然后系统可以将其用作错误或成功代码。在 Linux 中,您可以这样做:
$ yourprog && someotherprog
它会运行你的程序,然后运行其他程序,当且仅当你的程序返回 0。
在 Windows 中,您可以在批处理脚本中使用 if errorlevel 习惯用法来检查程序的返回值。
此外,如果您从另一个进程(使用 fork() 或 CreateProcess() 或其他东西)启动一个进程,您可以稍后检索其退出状态并采取相应措施。
【讨论】:
main() 将其值返回给系统(虽然是间接的,我们目前不讨论这一点)。
当控制到达带有返回值的函数的末尾时(例如,main();将返回的是寄存器中已经注定要保存返回值的任何内容(这有时是最后一个陈述,有时不是)。
当然,道德是你应该始终以 return 0 结束你的 main;
【讨论】:
main() 将它的值返回给加载器(系统)。 它表明程序是否成功执行。 返回(0);表示成功,因为 SUCCESS IS UNDEFINED :D !!!
【讨论】:
EXIT_SUCCESS 在stdlib.h 中定义。