全球旧事资料 分类
C语言的编译链接过程要把我们编写的一个c程序源代码转换成可以在硬件上运行的程序可执行代码需要进行编译和链接编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程链接是把目标文件操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程过程图解如下
从图上可以看到整个代码的编译过程分为编译和链接两个过程编译对应图中的大括号括起的部分其余则为链接过程
编译过程编译过程又可以分成两个阶段编译和会汇编编译
编译是读取源程序字符流对之进行词法和语法的分析将高级语言指令转换为功能等效的汇编代码源文件的编译过程包含两个主要阶段第一个阶段是预处理阶段在正式的编译阶段之前进行预处理阶段将根据已放置在文件中的预处理指令来修改源文件的内容如i
clude指令就是一个预处理指令它把头文件的内容添加到cpp文件中这个在编译之前修改源文件的方式提供了很大的灵活性以适应不同的计算机和操作系统环境的限制一个环境需要的代码跟另一个环境所需的代码可能
f有所不同因为可用的硬件或操作系统是不同的在许多情况下可以把用于不同环境的代码放在同一个文件中再在预处理阶段修改代码使之适应当前的环境主要是以下几方面的处理1宏定义指令如defi
eab对于这种伪指令预编译所要做的是将程序中的所有a用b替换但作为字符串常量的a则不被替换还有u
def则将取消对某个宏的定义使以后该串的出现不再被替换2条件编译指令如ifdefif
defelseelife
dif等这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理预编译程序将根据有关的文件将那些不必要的代码过滤掉3头文件包含指令如i
clude
好听全球资料 返回顶部