回复 15楼 马也
现在能见到的书可能也只有老谭是讲 void main() 的。
规定要写 int main(),很多现代编译器也已经不支持 void main() 的这种写法了。main 函数是程序的入口,它的名字和形式都是规定的,不允许程序员更改。
从没见过有人质疑 main 的名字,但很多人忽视返回值。一个原因可能是很久很久以前,对这个并没有明文规定。
现在的规定是,main 只有两种合法形式:
int main() {}
和
int main(int argc, char *argv[]) {}
至于第二种形式,规定又说,第二参数可以使用等效的 char **argv。
老一点的书也可能讲,main 还可以有第三个参数。总之,混乱还是存在的。但主要都是一些历史因素。
做这种规定,自然也有有它的原因。除了技术上原因以外,也有历史上的原因。其实我一直以为,现在已经比较明确了。但是也有人至今在为此争议。
对于初学者,不用太多了解这些细节,只要记得,一写 main 函数就是 int main(),return 0,就行了。
对于一些实现,void main 等价于编译器自动帮你改成 int,并 return 0。