假设我们有程序:
int main(int argc, char** argv){
if(argc < 3){
printf("usage details\n");
return EXIT_FAILURE;
}
dostuff();
return EXIT_SUCCESS;
}
我也看过这个:
int main(int argc, char** argv){
if(argc < 3){
printf("usage details\n");
exit(EXIT_FAILURE);
}
dostuff();
exit(EXIT_SUCCESS);
}
根据ISO/IEC 9899:1989 (C90):
该标准定义了 3 个严格符合的返回值(即不依赖于实现定义的行为):0 和 EXIT_SUCCESS 表示成功终止,EXIT_FAILURE 表示不成功终止。任何其他值都是非标准的和实现定义的。main 最后必须有一个明确的 return 语句以避免未定义的行为。
此外,根据ISO/IEC 9899:2011:
5.1.2.2.3 程序终止
如果 main 函数的返回类型是与 int 兼容的类型,则从初始调用到 main 函数的 return 等价于以 main 函数返回的值作为参数调用 exit 函数;到达终止 main 函数的 } 返回值 0。如果返回类型与 int 不兼容,则返回给宿主环境的终止状态未指定。
它指出从 main 的返回等效于以相同的返回值调用 exit。
话虽如此,问题是:重要的是,您是从 main 返回并让它为您调用 exit,还是从 main 退出