程序的翻译过程包括:预处理、编译、汇编、链接四个部分,接下来文章中将讨论在Linux下如何使用gcc编译器完成程序的翻译。
1 程序的翻译
gcc使用命令格式:
gcc [选项] 要编译的文件 [选项] 生成的目标文件
以下以 test.c
文件作为示例讨论程序翻译过程,其中源代码如下图所示:
1.1预处理(进行宏替换)
- 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。
- 预处理指令是以
#
号开头的代码行。 - 使用gcc完成预处理过程:
gcc -E test.c -o test.i
其中选项-E
的作用是让gcc在预处理结束后停止编译过程;选项-o
是指生成目标文件(注意:-o 选项后面必须紧跟目标文件);.i
文件是经过预处理后的C原始程序,如下图所示,源程序中的注释经过预处理后被删去了,main函数中的N也被替换为了100,还有条件编译也被处理了,此外,还可以看到,除了被处理后的原代码部分,前面还有八百多行代码是头文件等展开后的结果。