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