C语言中的main函数
来源:互联网 发布:进化论不能 知乎 编辑:程序博客网 时间:2024/05/21 09:05
C语言与许多编译式语言分开了3个阶段:编译、链接、运行。大多数脚本语言不需要标明程序开始执行的位置,
那么C语言为什么要main函数,为什么要从main函数开始执行?我简单的做了自己的几个观点。
1、C语言执行分为3个阶段:编译、链接、运行。每个编辑单元是各自独立编译成目标文件,最后由链接器把这些目
标文件链接成可执行程序。如果C语言可以在文件的全局域里写语句,若只有一个编译单元时问题不大。但对于多个
编译单元,链接器便不知道应先执行哪一个编译单元的全局语句。其中一种可行的解决办法,就是链接时只容许其中
一个编译单元含有全局语句,超过一个就报错。但更简单的做法,是利用不能重复定义函数的机制,若链接时有超过
1个main()函数就报错。而使用main()就解决了链接的问题,不至于链接时不知道从哪个编译单元开始执行。
2、程序不比生物,它只不过是我们人类使用计算机编写出来的,它没有思想,如果你没有指定默认的入口,那么它
也不知道从哪里开始执行。而main函数就是这个约定好的用户代码默认入口,也仅仅是一个指定的入口,也就是说并
不是一定要用main函数,程序也可以从其他函数开始执行,可以指定其他函数为默认的入口。main函数也只是一个函
数而已,只不过是程序默认的入口,所以就显得不一般了。如果你改变了程序的入口,那么在链接的时候就需要指定
默认执行的程序入口即可。
3、从CPU角度来看,将要执行的指令地址放在程序计数器(PC)里,一个程序需要执行,总需要一个入口地址。通
用的可执行文件格式(ELF/PE)总会指定一个入口地址,这样CPU才能开始执行一个程序的指令(由操作系统调
度),所以不管什么语言生成的可执行文件都需要一个入口地址。C语言自然也会有,至于为什么是main函数,这是
C语言标准规定,其实这个函数地址并不是一个可执行文件的真正的入口地址,通常入口地址在C Runtime里,由C
Runtime调用main函数,而这个被调用的函数可以在链接的时候指定,不必须是main,C Runtime在这里的作用是做
一些C语言的环境准备工作。
- C语言中的main函数
- 关于C语言中的main函数
- C语言Main函数中的参数
- c语言中的main函数讨论
- C语言main函数
- C语言main函数
- c语言main函数
- C语言main函数
- c中的main函数
- 关于C语言中的main函数的一点说明
- C语言中main函数中的argc argv
- C语言中的main函数参数及返回值
- C语言之main()函数
- C/C++语言 main函数
- C语言main()函数详解
- C语言main()函数详解
- C语言main函数参数
- C语言main()函数详解
- How To Set Up an OpenVPN Server on Ubuntu 14.04
- quartz实现定时功能实例详解(servlet定时器配置方法)
- jquery中的ready函数与window.onload谁先执行
- 【J2EE学习】(一)JSP向Servlet传值
- c语言实现插入排序
- C语言中的main函数
- Android UI控件大全
- 快学scala 第一章练习题课后答案
- Codeforces 543A. Writing Code DP
- 如果你现在学Android
- 函数重载与虚函数的区别
- 日拱一卒(五十七)
- Shell编程-字符截取命令-printf命令
- crontab任务输出数据会自动发送邮件