1.6.2 编译

编译是指用C语言提供的编译器将编辑好的源程序翻译成二进制形式的目标代码文件的过程。目标代码文件的扩展名为“.obj”,又称OBJ文件。

1.编译过程

C的编译过程分为2个子过程:

① 预处理过程。执行程序中的预处理命令。

② 编译过程。进行词法分析和语法分析。

在编译过程中,编译器将检查源程序每一条语句的词法和语法错误。

2.编译中的错误

编译错分为两种性质的错误:Error(致命)错误和Warning(警告)错误。

致命错误将终止程序继续编译,不会生成OBJ文件,必须修改程序重新编译。

警告错是编译程序不能百分之百地确定的错误,即源程序在这里可能有错。如果程序中只有Warning错,则可以连接生成可执行程序。警告错有两种,一种不会影响程序运行结果,另一种则会影响程序运行结果,这时需要分析具体情况,找到并修改错误。

3.编译方法

执行“Compile”菜单中的“Compile to OBJ”命令。如果编译成功,就可得到一个扩展名为“.obj”的目标代码程序。如果在编译过程中发现了错误,在屏幕下方的信息窗口中就会显示出错误的类型,错误发生的位置和错误的原因,即:

<错误性质> <错误发生的位置>:<错误内容>

在图1.11的信息窗口中指出:程序1-1.C的错误性质是Error,该程序错误发生的位置在第4行;错误的内容是main()函数中的符号k未定义。

图1.11 信息窗口中显示的出错信息

在编译过程中可以用<F6>键在程序编辑窗口和信息窗口中进行切换,以便修改程序或者查看错误提示信息。

值得注意的是,编译时,当信息窗口中列出了很多行的错误信息时,并不表示需要依次对这些行进行修改,有可能是一个错误所致。例如,程序中有一个变量没有定义,那么,所有使用该变量的行在编译时都会报错。当加上对该变量的定义时,所有由该变量引起的错误都将消失。所以在修改编译错误时,对不明显的错误,最好是修改一个错误就重新编译一次。

《C/C++程序设计实验指导与测试》(第3版)的附录C中列出了常见的编译错误。