我应该在main()中使用exit()语句还是只使用return语句?就我个人而言,我更喜欢return语句,因为我觉得它就像读取任何其他函数一样,并且当我读取代码时,流程控制是平滑的(在我看来)。而且,即使我想重构main()函数,使用return似乎也比使用exit()更好。
exit()做了return做不到的特殊事情吗?
发布于 2011-05-02 20:07:33
选择exit至少有一个原因:如果您的任何atexit处理程序在main中引用自动存储持续时间数据,或者如果您在main中使用setvbuf或setbuf将自动存储持续时间缓冲区分配给其中一个标准流,那么从main返回会产生未定义的行为,但调用exit是有效的。
另一个潜在的用途(通常是玩具程序)是从递归调用main的程序中退出。
发布于 2009-01-20 14:17:49
我总是使用return,因为main()的标准原型说明它返回一个int。
也就是说,一些版本的标准对main进行了特殊处理,并假定如果没有显式的return语句,则返回0。给定以下代码:
int foo() {}
int main(int argc, char *argv[]) {}G++仅为foo()生成警告,并忽略main中缺少的返回
% g++ -Wall -c foo.cc
foo.cc: In function ‘int foo()’:
foo.cc:1: warning: control reaches end of non-void function发布于 2019-05-23 21:35:13
exit(0)和return(0)在main - when中是有区别的,你的main函数会被多次调用。
下面的程序
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
if (argc == 0)
return(0);
printf("%d", main(argc - 1, argv));
}运行方式
./program 0 0 0 0将产生以下输出:
00000但是这一条:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
if (argc == 0)
exit(0);
printf("%d", main(argc - 1, argv));
}无论参数如何,都不会打印任何内容。
如果你确信没有人会显式地调用你的main,这在技术上没有太大的区别,但是维护更清晰的代码exit看起来会更好。如果你出于某种原因想要调用main -你应该根据你的需要来调整它。
说起C。
https://stackoverflow.com/questions/461449
复制相似问题