main函数
程序执行总是从main函数开始,如果有有其他函数,则完成对其他函数的调用后再返回到主函数,最后由main函数结束整个程序
1. main唯一
对于程序的全局域中,main()函数只能有一个,且这个函数不能重载,因为main()函数作为函数的入口,如果有多个,系统就找不到入口了。
对于 在类中或命名空间中,我们也是可以定义main()函数的,只是这个main()函数与全局的main()函数不是同一个函数,它们只是名字相同,功能完全不同。只是我们一般为了区分,在局部域中,定义函数时不会写成main()
2. main函数调用
汇编代码中:
__start:
:
init stack;
init heap;
open stdin;
open stdout;
open stderr;
:
push argv;
push argc;
call _main; (调用 main)
:
destory heap;
close stdin;
close stdout;
close stderr;
:
call __exit;
在调用main函数之前,会先进行初始化栈,堆,打开标准输入,输出,错误流,把参数压栈。还有一些全局变量、对象和静态变量、对象的空间分配和赋初值。
在调用main函数之后,要销毁堆内存,关闭标准输入,输出,错误流。
这些都是编译器帮助我们自动生成的,帮助我们启动main函数
3. main()函数参数
C++标准允许主函数main()有或没有参数列表。 您能在主函数main()中使用一个或更多的参数。 如下是一些惯例:
int main(int argc, char *argv[])
argc 为参数个数
argv[] 传人的参数数组
a.exe a b
如上运行:
则main函数里 argv[0]=a.exe, argv[1] = a, argv[2] = b, argc = 3
预处理器
预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。