一般来说,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作为入口函数调用。
#include<stdioh>
void main() { int n,c,i; double s,t;
scanf("%d%d",&n,&c); t=1; for ( i=0;i<n;i++ ) { t=10; t+=c; }
s=t;
for ( i=1;i<n;i++ ) { t/=10; s-=t; }
printf("%0lf\n",s);
}
一个C语言程序的执行是从()
A任意位置开始
B本程序main函数开始,main函数结束
Cmain函数开始,中断函数结束
D子函数开始,main函数结束
正确答案:B
1、预处理
在这一阶段,源码中的所有预处理语句得到处理,例如:#include语句所包含的文件内容替换掉语句本身,所有已定义的宏被展开。
根据#ifdef,#if等语句的条件是否成立取舍相应的部分,预处理之后源码中不再包含任何预处理语句。
GCC预处理阶段可以生成i的文件,通过选项-E可以使编译器在预处理结束时就停止编译。例如:gcc -E -o helloi helloc
2、编译
这一阶段,编译器对源码进行词法分析、语法分析、优化等 *** 作,最后生成汇编代码。这是整个过程中最重要的一步,因此也常把整个过程称为编译。
可以通过选项-S使GCC在进行完编译后停止,生成s的汇编程序。例如:gcc -S -o hellos helloc
3、汇编
这一阶段使用汇编器对汇编代码进行处理,生成机器语言代码,保存在后缀为o的目标文件中。
当程序由多个代码文件构成时,每个文件都要先完成汇编工作,生成o目标文件后,才能进入下一步的链接工作。
目标文件已经是最终程序的某一部分了,只是在链接之前还不能执行。可以通过-c选项生成目标文件:gcc -c -o helloo helloc
4、链接
经过汇编以后的机器代码还不能直接运行。为了使 *** 作系统能够正确加载可执行文件,文件中必须包含固定格式的信息头,还必须与系统提供的启动代码链接起来才能正常运行,这些工作都是由链接器来完成的。gcc -o hello helloc
5、运行:执行EXE文件,得到运行结果。
以上就是关于一个C语言程序的执行起点是什么全部的内容,包括:一个C语言程序的执行起点是什么、C语言执行程序、一个C语言程序的执行是从()等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)