我们可以用几种方式编写main函数,
int main()int main(int argc,char *argv[])int main(int argc,char *argv[],char * environment)运行时CRT函数如何知道应该调用哪个main.请注意这里,我不是在询问是否支持Unicode.
接受的答案是不正确的,CRT中没有特殊的代码来识别main()声明的类型.
它的工作原理是因为cdecl调用约定.其中指定参数从右向左推入堆栈,并且调用者在调用后清理堆栈.所以CRT只是将所有参数传递给main()并在main()返回时再次弹出它们.您需要做的唯一事情是在main()函数声明中以正确的顺序指定参数.argc参数必须是第一个,它是堆栈顶部的参数.argv必须是第二名,等等.省略一个论点没有区别,只要你省略所有后面的论点.
这也是printf()函数可以工作的原因,它有可变数量的参数.在已知位置有一个参数,第一个参数.