C程序的编译过程
某厂面试归来,发现自己落伍了!>>> 转自: http://blog.csdn.net/lw1a2/archive/2006/12/10/1437402.aspx 编译 , 编译程序读取源程序(字符流) , 对 之进行词法和语法的分析 , 将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对 可执行文件格式的要求链接生成可执行程序。 C源程序头文件-->预编译处理(cpp)-->编译程序本身 -->优化程序-->汇编程序-->链接程序-->可执行文件 1.编译预处理 读取c 源程序,对其中的伪指令(以 # 开头的指令)和特殊符号进行处理 [析] 伪指令主要包括以下四个方面 (1) 宏定义指令,如 #define Name TokenString,#undef 等。对于前一个伪指令,预编译所要做的是将程序中的所有 Name 用 TokenString 替换,但作为字符串常量的 Name 则不被替换。对于后者,则将取 消对某个宏的定义,使以后该串的出现不再被替换。 ( 2 )条件编译指令,如 #ifdef,#ifndef,#else,#elif,#endif, 等等。这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件, 将那些不必要的代码过滤掉 ( 3 )头文件包含指令,如 #include