初识编译器:
预编译:
示例程序:
源文件:
1 #include "19-1.h" 2 3 // Begin to define macro 4 5 #define GREETING "Hello world!" 6 7 #define INC(x) x++ 8 9 // End 10 11 int main() 12 { 13 p = GREETING; 14 15 INC(i); 16 17 return 0; 18 }
头文件:
1 /* 2 3 This is a header file. 4 5 */ 6 7 8 char* p = "Delphi"; 9 10 int i = 0;
执行预编译命令:
得到的中间文件如下:
预处理过后,注释被删掉了,7和9行的全局变量也直接被复制过来了,1-6行为需要传递给后续编译器的信息。我们在c文件中定义的宏也被展开了。
预编译其处理之后就该执行真正的编译了。
编译:
编译过程主要对源程序进行翻译,翻译成汇编代码。调用编译模块进行编译,如下:
编译结果如下:
汇编:
编译过后就是汇编的过程:
汇编指令如下:
汇编之后生成了目标文件,但是它并不是一个可执行文件。
汇编之后还需要进行链接。
链接:
小结: