一般来说,C语言都是从main函数开始运行的,这个main函数可以认为是C语言程序的执行起点。
更准确的说法,应该是C语言从入口函数开始执行。
因为,虽然大多数编译器都是以main为起始执行函数,也就是入口函数,但还是有例外的,比如:
1、对于支持UNICODE
WIN32
应用程序,其程序入口为tmain;
2、对于windows
窗体程序,其程序入口为WinMain;
3、gcc中,传统有两个编译选项可以指定入口函数名,即:
gcc
-e
entryfunc
gcc
--Entry=entryfunc
对于当前新版gcc,
仅支持-e。
比如编译时用命令:
gcc
-e
my_main
ac
-o
aout
就会把my_main作为入口函数调用。
C语言程序执行总是先从main函数开始执行,若main函数中调用其它函数必须先声明或先定义,然后才能调用。
若调用函数在main函数之后,那么在main函数前面必须加上函数原型。比如本题。
若调用函数在main函数之前,则不必再加上函数原型。
执行main的时候,调用这个函数,就是转去执行调用函数,执行完毕后再返回原调用处继续往下执行。
C源程序到运行程序步骤:
1编辑:输入源程序并存盘(C)
2编译:将源程序翻译为目标文件(OBJ)
3链接:将目标文件生成可执行文件( EXE)
4运行:执行EXE文件,得到运行结果
编译和链接。
每一个C语言程序必须要经过编译和链接才能被计算机执行,编译是将C源码翻译成机器码,链接是将将二进制目标文件装配成一个具有特定格式的二进制可执行文件,比如Windows平台上是PE格式,一般以exe为扩展名。
一个C语言程序从源码到计算机系统可以执行,更细致的划分为:预处理——编译——汇编——链接。预处理是对C语言源码进行文本处理,编译阶断是将C源码经C编译器生成汇编代码,汇编阶断是将汇编代码经汇编器生成二进制机器码文件。这两个合拢起来,笼统的可以叫做编译阶断。
词法分析阶段:读入源程序,对构成源程序的字符流进行扫描和分解,识别出单词,
语法分析阶段:机器通过词法分析,将单词序列分解成不同的语法短语,确定整个输入串能够构成语法上正确的程序。
语义分析阶段:检查源程序上有没有语义错误,在代码生成阶段收集类型信息
中间代码生成阶段:在进行了上述的语法分析和语义分析阶段的工作之后,有的编译程序将源程序变成一种内部表示形式
代码优化:这一阶段的任务是对前一阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和省空间
目标代码生成:这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令
以上就是关于一个C语言程序的执行起点是什么全部的内容,包括:一个C语言程序的执行起点是什么、c++中为什么原型放main前面源代码放main后面,执行main的时候,执行到这个函数是先跳出、C语言程序运行过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)