C++ 将 f() 视为 f(void),f() == f(void)
C 将 f() 视为 f(...),调用者可以任意传递参数,f() != f(void)
但 main() 是一个特殊的函数,它是由系统调用的,系统始终假设 main 的原型是:
int main(int argc, char * argv[], char * env[]);
不管你的 main 实际原型是什么,系统都是这样调用:
main(_C0argc,_tC0argv,_tC0environ)
所以 main() 和 main(void) 的实际效果完全相同,只是在 C 语言中有理论上的区别。
C 将 f() 视为 f(...),调用者可以任意传递参数,f() != f(void)
但 main() 是一个特殊的函数,它是由系统调用的,系统始终假设 main 的原型是:
int main(int argc, char * argv[], char * env[]);
不管你的 main 实际原型是什么,系统都是这样调用:
main(_C0argc,_tC0argv,_tC0environ)
所以 main() 和 main(void) 的实际效果完全相同,只是在 C 语言中有理论上的区别。
本文解析了C和C++语言中main函数的不同之处,特别是在参数定义方面。指出在C++中main函数可以被声明为不接受任何参数,而在C语言中这样的声明允许传入任意数量的参数。此外,还解释了main函数的不同形式如何被系统调用。
745

被折叠的 条评论
为什么被折叠?



