为什么我们需要使用int main
而不是void main
在C++中?
简短的回答是因为C++标准需要main()
返回int
.
您可能知道,main()
函数的返回值被运行时库用作进程的退出代码.Unix和Win32都支持在进程完成后从进程返回的(小)整数的概念.返回值为main()
程序员指定此值提供了一种方法.
如果应用程序成功与否,大多数操作系统会向用户或调用进程报告.这在脚本编写时尤其有用,脚本可以在程序结果上有条件地分支(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的设置和清理例程需要使用一致的接口.
改变的主要原因
void main(){}
至
int main(){}
在以后的版本中,是为了在执行期间将程序中发生的错误通知给运行它的操作系统
return 0;
识别程序成功执行,如果有任何数字而不是0返回,这意味着发生了一些错误,谁的错误代码是由main返回的.如果您在codeblock IDE上运行,请参阅构建日志中是否正常显示主返回0
Process terminated with status 0
否则它以红色显示状态代码,表示发生了错误