对于 void main()的错误
以下观点是自我抒发以及摘录的,如有错误请大神指正:很多人现在都在学习C或者C++的时候都习惯性地去打上 void main() ,其实这是错误的。C/C++ 中从来没有定义过void main()。本贾尼·斯特劳斯特卢普(C++之父)说过,void main() 从来就不属于C或者是C++ 。
早期的时候 main() 是可以接受的,不过在最新的 C99 标准和C++的定义中,只有以下两种定义方式是正确的:
int main( void )
int main( int argc, char *argv[] )
main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统)。
/////////////////////////////////////////////以下是蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有 ,尊重别人的成果。
返回值的作用
main 函数的返回值用于说明程序的退出状态。如果返回 0,则代表程序正常退出,否则代表程序异常退出。下面我们在 winxp 环境下做一个小实验。首先编译下面的程序:
int main( void )
{
return 0;
}
然后打开附件里的“命令提示符”,在命令行里运行刚才编译好的可执行文件,然后输入“echo %ERRORLEVEL%”,回车,就可以看到程序的返回值为 0 。假设刚才编译好的文件是 a.exe ,如果输入“a && dir”,则会列出当前目录下的文件夹和文件。但是如果改成“return -1”,或者别的非 0 值,重新编译后输入“a && dir”,则 dir 不会执行。因为 && 的含义是:如果 && 前面的程序正常退出,则继续执行 && 后面的程序,否则不执行。也就是说,利用程序的返回值,我们可以控制要不要执行下一个程序。这就是 int main 的好处。如果你有兴趣,也可以把 main 函数的返回值类型改成非 int 类型(如 float),重新编译后执行“a && dir”,看看会出现什么情况,想想为什么会出现那样的情况。顺便提一下,如果输入 a || dir 的话,则表示如果 a 异常退出,则执行 dir 。
int main( int argc, char *argv[], char *env[] ) 也不是标准C里面定义的东西~char *env[]是某些编译器提供的扩展功能~用于获取系统的环境设定~因为不是标准~故而移植性差~不推荐使用