#include<stdio.h>是指将stdio.h这个头文件包含进来.
return 0;
表示正常返回,返回其他值也是对的...看需要而定.
大家可以看看这篇文章:http://hi.baidu.com/dream0xdl/blog/item/af378713a27fe7826538db4d.html
对于int main()和void main() 先不说哪个对或哪个不对,反正在一定条件下都是可以通过编绎的。以前用TC,我一直是写成void main()的,后来装了win-TC,C-free,TCC,VC++6.0 等,写的还是void main() ,最近用了Linux下的Gcc,感觉就出现了问题。。。
先看一个最简单的程序
#include"stdio.h"
void main()
{
printf("hello,world!\n");
}
没出现在问题吧,我以前就是这样写的,很多人也是。甚至写成main( )也会通过。。。
现在我用Linux下的gcc g++ cc分别编绎,结果:
[root@localhost home]# gcc a.c
a.c: In function `main':
a.c:3: warning: return type of 'main' is not `int'
[root@localhost home]# g++ a.c
a.c:3: error: `main' must return `int'
[root@localhost home]# cc a.c
a.c: In function `main':
a.c:3: warning: return type of 'main' is not `int'
出现问题了,出现了返回值不是int的错误。。。
解说:
Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main() { /* ... */ } is not and never has been C++, nor has it even been C.(意为 void main() 从来就不存在于 C++ 或者 C )。
所以void main( )本身就是错误的。。。
如果看过 The C programming Language 2e 这相书话,里面的例子写的都是main() ,这是C89标准中的,N年前的东西了。。。
C99标准中,定义的是int main(void),这里的void说明main()是不接收参数的,这是标准的,不要让他空着,main 函数的返回值类型必须是 int ,为什么有的会通过呢?这是编绎器给你自动加上去的,最后的return 0;也是,不要省略返回。VC6不会在目标文件中自动加入return 0; ,大概是因为 vc6 是 98 年的产品,所以才不支持这个特性。不过,gcc3.2(Linux 下的 C 编译器)会在生成的目标文件中加入 return 0;
因此并非所有的编绎器都支持void main (),标准中从来没有定义过void main (),虽然有些编绎器会支持,但请记住int并不是缺省返回值类型。。。C++中也是一样的道理。
最后说点,VC++6.0并不支持C99标准,gcc等支持了大部分,目前好像还没有哪一款编绎器完全支持C99标准的,Dev-C++一样也不是完全支持的.
原文链接(转载请保留此行):http://hi.baidu.com/dream0xdl/blog/item/d5dad7ce6358f80192457ea9.html