从主要“返回”的正确方法

时间:2013-11-11 18:23:04

标签: c

说我们有这个程序:

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个严格符合要求的返回值(即&gt;不依赖于实现定义的行为):0和EXIT_SUCCESS用于成功的&gt;终止,以及EXIT_FAILURE用于不成功的终止。任何其他值都是非标准的和实现定义的。 main必须在&gt;末尾有一个显式的return语句,以避免未定义的行为。

另外,根据 ISO / IEC 9899:2011

  

5.1.2.2.3程序终止

     

如果main函数的返回类型是与int兼容的类型,则从&gt;初始调用返回main函数等效于调用exit函数,其中main函数返回的&gt;值作为其参数; 11)到达}终止&gt;主函数返回值0.如果返回类型与int不兼容,则>>未指定返回到主机环境的终止状态。

它声明从main返回等同于使用相同的返回值调用exit。

话虽如此,问题是: 这是否重要,无论您是从main返回并让它为您调用exit,还是从main

退出

1 个答案:

答案 0 :(得分:2)

作为终止程序的方法,returnexit密切相关。事实上,声明

return EXIT_SUCCESS;
main中的

相当于

exit (EXIT_SUCCESS);  

returnexit之间的区别在于exit导致程序终止,无论哪个函数调用它。 return语句仅在main函数中出现时才会终止程序。