C语言入门第二课让程序跑起来

在上一节课的最后,我们展示了一段C语言程序源码,同时也给出了这段程序执行的结果,那么究竟这段程序是如何执行起来又在哪里给出的这个输出结果呢?这节课我们就来简单的了解一下C语言的程序是如何“跑”起来的,我们不会做非常深入的研究(如果你有兴趣的话,这也是一个很有趣的编程知识),只是让大家有个直观的印象,以便于我们在接下来的编程学习和实践中能够更清晰的知道自己编写的程序是否按照我们的设想执行了。

C语言是一种编译型语言,与之相对的,还有解释型语言。解释型语言在执行时需要一个解释器,其源码的执行需要借助解释器来达到目的,所以实际上其执行时就是解释器读取程序源码,并根据源码的情况执行并给出执行结果,简单的说,解释型语言的程序是由其对应的解释器来执行并给出结果。编译型语言的执行过程就要相对复杂一些,大体上上从编写源码到最终执行可以分成几个步骤:源码——预处理——编译——链接——执行。

?源码:即我们编写的C源码代码,可能是一个完整的功能,可能是一小段示例型的代码,一般这样的源码需要保存在一个文件当中,我们称之为源文件。通常情况下C语言的源文件保存在扩展名为.c的文件中,例如main.c、sample.c等。其内容则如我们上节课的那一小段示例程序一样,是符合C语言规范的C程序代码。

?预处理:编译器对源文件中一些预编译命令的内容进行处理,比较常见且相对简单的动作是将include引用导入、将定义的宏展开等,这里一般是将源文件的内容进行一定的“补充”和整合。

?编译:在对源文件进行预处理之后,编译器将进行编译操作。即将源码“翻译”成汇编指令。在这一过程中,编译器会对源码进行很多的检查和优化,例如可能会对逻辑上永远不会执行的源码进行删除,会在发现语法错误时停止编译过程并报告错误信息等等。编译器一般会提供很多的指令对编译的过程进行一些控制,包括优化的程度,语法检查的严苛程度等。编译后生产的文件一般成为目标文件,大多数情况下并不能直接执行。

?链接:对文件进行编译之后生成的目标文件,需要通过链接器连接成一个二进制文件,即是可执行程序。链接的过程一般是将需要的库文件和编译生成的目标文件“打包”成一个可执行程序,在这一过程中,还会对各个目标文件中的依赖关系进行检测和处理,如果某个目标中需要符号在链接的所有目标文件中都无法找到,就无法生成最终的可执行程序。

?执行:对于链接后生成的可执行程序,在“目标”机器上运行,即可按照我们在源文件中编写的逻辑得到最终的执行结果。

以上就是一个编译型的编程语言从源文件到可执行程序的整个过程,我们在编写一个程序的时候,要看到最终的结果,理论上就要经过以上的所有步骤。如果是借助IDE来进行编码,那么一般我们会忽略(或者只需要配置一次)中间的预处理、编译和链接的步骤(一般统称为编译过程),只需要


转载请注明:http://www.aierlanlan.com/grrz/7581.html

  • 上一篇文章:
  •   
  • 下一篇文章: