在C++中绝对没有出现过void main(){/* ... */}这样的函数定义,在C语言中也是。
main 函数的返回值应该定义为int 类型,在C和 C++ 标准中都是这样规定的。在C99 标准中规定,只有以下两种定义方式是正确的:
- int main( void )
- int main( int argc, char *argv[] )
在C++03中也给出了如下两种main函数的定义方式:
- int main()
- int main( int argc, char *argv[] )
虽然在C和C++标准中并不支持void main(),但在部分编译器中void main()依旧是可以通过编译并执行的,比如微软的VC++。由于微软产品的市场占有率与影响力很大,因此在某种程度上加剧了这种不良习惯的蔓延。不过,并非所有的编译器都支持 void main(),gcc就站在了VC++的对立面,它是这一不良习气的坚定抵制者,它会在编译时就明确地给出一个错误。
具体请看http://book.51cto.com/art/201202/317558.htm
《编写高质量代码,改善c++程序的150个建议》这本书里的。