以下是引用pangding在2012-8-8 21:45:27的发言:
现在能见到的书可能也只有老谭是讲 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。
现在能见到的书可能也只有老谭是讲 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。
对了,关于这个问题,我还有个事情要问您,如果按您所说,我的调用函数的类型是否也应该把void改成int;(比如我帖子中的这两个调用函数)。或者我可不可以进一步理解为在以后编写函数即使没有返回值的时候不再用void,全用int代替,然后没有返回值就在函数末尾写上return 0;???