1、C++编译过程
C和C++转化成计算机语言主要经理四个过程:预编译,编译,汇编,链接
编译
编译是读取源程序(字符流),对之进行词法和语法的分析,将语言指令转换为功能等效的汇编代码,源文件的编译过程包含两个主要阶段:
编译预处理
读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。
伪指令主要包括以下四个方面:
-
宏定义指令,如#define Name TokenString,#undef等。
对于前一个伪指令,预编译所要做的是将程序中的所有Name用TokenString替换,但作为字符串常量的Name则不被替换。对于后者,则将取消对某个宏的定义,使以后该串被替换。 -
条件编译指令,如#ifdef,#ifndef,#else,#elif,#endif等。
这些指令的引入使得程序员可以通过定义不同的宏来定编译程序对那些代码进行处理。预编译程序将根据有关文件,将那些不必要的代码过滤掉。 -
头文件包含指令,如# include “FileName” 或者# include < FileName> 等。
在头文件中一般用伪指令# define定义了大量的宏(最常见的是字符常量),同时包含有各种外部符号的声明。
采用头文件的目的主要是为了使某些定义可以供多个不同的C源程序使用。因为在需要用到这些定义的C源程序中,只需加上一条# include语句即可,而不必再在此文件中将这些定义重复一遍。预编译程序将把头文件中的定义统统都加入到它所产生的输出文件中,以供编译程序对之进行处理。
包含到c源程序中的头文件可以是系统提供的,这些头文件一般被放在/ usr/ include目录下。在程序中# include它们要使用尖括号(< >)。另外开发人员也可以定义自己的头文件,这些文件一般与c源程序放在同一目录下,此时在# include中要用双引号(“”)。 -
特殊符