1 / 9
文档名称:

c、c 语言语言编译过程总结详解~~.pdf

格式:pdf   大小:340KB   页数:9页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

c、c 语言语言编译过程总结详解~~.pdf

上传人:qucheng26364 2021/11/26 文件大小:340 KB

下载得到文件列表

c、c 语言语言编译过程总结详解~~.pdf

相关文档

文档介绍

文档介绍:C 语言编译过程总结详解

从图上可以看到,整个代码的编译过程分为编译和链接两个过
程,编译对应图中的大括号括起的部分,其余则为链接过程。
编译过程
编译过程又可以分成两个阶段:编译和会汇编。
编译
编译是读取源程序(字符流),对之进行词法和语法的分析,将
高级语言指令转换为功能等效的汇编代码,源文件的编译过程包含两
1
个主要阶段:
第一个阶段是预处理阶段,在正式的编译阶段之前进行。预处理
阶段将根据已放置在文件中的预处理指令来修改源文件的内容。如
#include 指令就是一个预处理指令, 文
件中。这个在编译之前修改源文件的方式提供了很大的灵活性,以适
应不同的计算机和操作系统环境的限制。一个环境需要的代码跟另一
个环境所需的代码可能有所不同,因为可用的硬件或操作系统是不同
的。在许多情况下,可以把用于不同环境的代码放在同一个文件中,
再在预处理阶段修改代码,使之适应当前的环境。
主要是以下几方面的处理:
(1)宏定义指令,如 #define a b
对于这种伪指令,预编译所要做的是将程序中的所有 a 用 b 替换,
但作为字符串常量的 a 则不被替换。还有 #undef,则将取消对某个
宏的定义,使以后该串的出现不再被替换。
(2)条件编译指令,如#ifdef,#ifndef,#else,#elif,#endif
等。
这些伪指令的引入使得程序员可以通过定义不同的宏来决定编
译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些
不必要的代码过滤掉。
2
(3)头文件包含指令,如#include "FileName"或者#include
<FileName>等。
在头文件中一般用伪指令#define 定义了大量的宏(最常见的是
字符常量),同时包含有各种外部符号的声明。采用头文件的目的主
要是为了使某些定义可以供多个不同的 C 源程序使用。因为在需要
用到这些定义的 C 源程序中,只需加上一条#include 语句即可,而不
必再在此文件中将这些定义重复一遍。预编译程序将把头文件中的定
义统统都加入到它所产生的输出文件中,以供编译程序对之进行处
理。包含到 c 源程序中的头文件可以是系统提供的,这些头文件一般
被放在 /usr/include 目录下。在程序中#include 它们要使用尖括号(<
>)。另外开发人员也可以定义自己的头文件,这些文件一般与 c 源程
序放在同一目录下,此时在#include 中要用双引号(