为什么我们需要在C ++中使用`int main`而不是`void main`?

时间:2009-01-16 08:35:57

标签: c++ function return-value main

为什么我们需要在C ++中使用int main而不是void main

8 个答案:

答案 0 :(得分:30)

简短的回答是因为C ++标准要求main()返回int

正如您可能知道的那样,main()函数的返回值被运行时库用作进程的退出代码。 Unix和Win32都支持在进程完成后从进程返回的(小)整数的概念。从main()返回值为程序员指定此值提供了一种方法。

答案 1 :(得分:15)

如果应用程序成功与否,大多数操作系统会向用户或调用进程报告。这在脚本编写时尤其有用,脚本可以在程序结果上有条件地分支(if-then)。有点像:

// pseudo-code
screenscrape  http://mydatasource.com > results.txt
if errorlevel == 0 then
   processfile results.txt
else
   echo Screen Scraping Failed!
end if

此结果状态通过main的返回值完成。

虽然有些编译器允许void main,但为了一致性和简单性,ANSI标准需要一个main的原型:

int main(int argc, char *argv[]);

因为在C中,参数被调用者清理,所以main的作者可以忽略声明或处理参数argc& argv的。但是,如果调用main的setup-routine期望一个int返回值,而不是找到一个,则行为可能是未定义的。

简短回答:

  • main的返回值很有用 用于编写脚本。
  • 调用main的设置和清理例程需要使用一致的接口。

答案 2 :(得分:6)

更改

的主要原因
  

void main(){}

  

int main(){}

在以后的版本中,通知错误在执行期间发生在操作系统上运行

return 0;

识别程序是否成功执行,如果有任何数字而不是0返回,则表示发生了一些错误,其中 错误代码 是由main返回的。 如果您正在运行 codeblock IDE ,请参阅构建日志中是否正常显示主要返回0

Process terminated with status 0

否则它会以红色显示状态代码,表示发生了错误

答案 3 :(得分:1)

来自维基百科:

  

从main函数返回的值成为进程的退出状态,尽管C标准仅将特定含义归为两个值:EXIT_SUCCESS(传统上为零)和EXIT_FAILURE。其他可能的返回值的含义是实现定义的。

答案 4 :(得分:0)

与在C中一样,因为该过程将为操作系统提供退出代码。

您可以使用

int main (int argc, char ** argv)
{
  return (0);
}

int main (int argc, char ** argv)
{
  exit (0);
}

至少在C89 IIRC中。

答案 5 :(得分:0)

因为int是返回代码,程序可以返回操作系统。

您可以查询此值以检查操作是否已成功。

使用命令行脚本时,这非常有用。

答案 6 :(得分:0)

也许是因为使用main()方法中的状态代码干净地退出是有意义的。在Java中,我们必须使用System.exit()来模拟它,这并不是那么优雅。

答案 7 :(得分:0)

当我们执行程序检查它是否成功运行时。因此,当它返回0时,这意味着它是真的&成功运行,如果它返回1然后它没有成功运行&此int值告诉操作系统程序是否成功运行