
1.6 C++程序的编写与实现
一个C++程序从编写到得到运行结果,必须经过编辑建立源程序文件(.cpp)、经过编译生成目标程序(.obj)、连接生成可执行的文件(.exe),最后才能运行得到结果,这个过程是反复的,如图1.9所示。
1.编辑
编辑即用C++语言编写程序,用C++语言编写的程序称为C++源程序,以.cpp作为扩展名。
2.编译
由于计算机只能识别二进制指令,因此使用高级语言编写的程序不能直接被计算机识别和执行。为了使计算机能执行用高级语言编写的程序,首先要使用编译器(compiler,也称为编译程序或编译系统)将源程序翻译为二进制形式的目标程序,目标程序的扩展名为.obj。编译的作用是对源程序进行词法和语法的检查,词法检查是检查源程序中的单词拼写是否正确,如误将void写作viod。语法检查是检查程序的语法是否正确,例如在语句的末尾未加分号。
编译结束后会显示所有的编译错误信息,一般编译系统给出的错误信息分为两种:一种是错误(error);一种是警告(warning)。
一旦检查出错误(error),就不能生成目标程序,必须对源程序文件进行修改,修正错误后,重新进行编译,当编译没有错误后,才会生成目标程序。
警告(warning)表示源程序可能有错误,也可能不是错误。一般来说,如果只出现警告信息,仍然可以继续连接、运行程序。有些程序员因此而经常忽视这些编译警告,继续连接程序、运行程序,直到出现运行错误后再回过头来检查这些警告信息,这是非常不好的习惯,因为运行错误比编译错误更难于检查和修改,严重的运行错误还会引起“死机”现象。因此,建议在出现编译警告时最好仔细检查程序,设法消除引起警告的原因。
3.连接
生成目标程序后,就可以进行连接操作,连接的目的是将目标程序和系统的库文件以及系统提供的其他信息连接起来,最终形成一个可执行的二进制文件,其扩展名为.exe,是可以直接运行的。如果连接时出现错误,例如程序中包含了两个main函数或没有main函数,此时也要对源程序文件进行修改,而后再编译、连接,若没有错误,才能生成可执行文件,如图1.9所示。

图1.9 建立一个C++程序的操作流程
4.运行
运行生成的.exe文件,即可得到程序的运行结果。对运行结果进行分析,若结果有误,说明程序中有逻辑错误,此时还是要修改程序,而后重新进行编译、连接、运行,直到程序的运行结果正确。