【发布时间】:2014-02-11 18:07:36
【问题描述】:
我知道return 和exit() (link) 之间的区别,但我不知道何时何地选择其中一个而不是另一个。例如,从this 的答案我知道return 是一个更好的选择,但从another 我的理解正好相反。
一个例子:在这段代码中(来自this的问题)是最好使用exit()还是return?
int read_file (char *filename, int **vet)
{
FILE *fin;
if ( !(fin = fopen(filename, "r")) )
{
perror(filename);
return -1;
}
* vet = malloc (10 * sizeof(int));
if ( *vet == NULL )
{
perror("Memory allocation error.\n");
return -2;
}
/* ... */
return fclose(fin);
}
int main ()
{
char filename[100];
int *vet;
if ( read_file(filename, &vet) )
/* ??? exit(1) OR return -1 ??? */
return 0;
}
一般来说?
【问题讨论】:
-
你写的
exit(1) OR return -1 ???--1和-1不等价。 -
@MikeW 我已经在我的链接中链接了同一个问题:它是不同的。
-
@user 并没有什么不同。该问题的差异有一个全面的解释。没有正确的答案——这取决于你在做什么。在这种情况下,你的问题没有什么意义。
-
@user:不,一点也不。无论是调用
exit还是执行return语句,程序返回的状态值都应该完全相同。对于某些函数,有使用负值返回错误的约定,但这不适用于main。唯一的 portable 状态值是0、EXIT_SUCCESS和EXIT_FAILURE。 (在类 Unix 系统上,负值无论如何都映射到范围 0..255,所以return -1;可能等同于return 255;。) -
@KeithThompson 是的,对不起:我在阅读您的回复之前写了我的评论!
标签: c return return-value exit