本章介绍我在随书光盘中准备的供你阅读本书时使用的工具。你也许更喜欢使用你已经拥有的某种工具,也可能偏爱使用光盘中提供的IDE。不论作何选择,请浏览本章,并检查每一步骤是否可以正确运作(你也可以就此完成对自己所选工具的检查),这对你很有好处。如果你使用的是MinGW Developer Studio(我称之为MDS),可以通过将在屏幕上看见的画面和本章中的截屏图作比较,以检查你做得对不对。如果你使用的是光盘上的JGraspTM,那么可以通过检查光盘上的本章替代版本进行核对。如果你使用的是某些其他工具,仍应该浏览本章,以确保你知道如何使用这些工具编写并生成简单的程序。最重要的是,你必需检查选用的工具能否调用我提供的库。
在继续前进之前,请首先阅读光盘根目录下的Read_First.txt文件。它会告诉你光盘上有什么内容,以及到哪儿去寻找关于安装适合你的机器所使用操作系统(微软Windows或UNIX派生物(例如Linux)或Mac OS X)的软件的说明。在你完成该步骤或安装好你所选择的某些其他开发工具后,请接着从这里阅读。
也许你使用过某种拥有类似工具的语言,因此你对这种使用编译型语言的工具已经比较熟悉。如果是这样的话,请原谅我为了其他读者的利益而花时间去解释这些东西。
在本书中,我假定你正在使用一个集成开发环境(Integrated Development Environment,IDE),对程序员而言,它的作用如同木匠所使用的工作台。一些程序员习惯于使用命令行工具。如果你懂得如何编写makefile,这种方式很好,但如果你不会(或甚至对那些东西完全没有概念),则最好还是使用一个IDE,它可以提高编写、编译、连接以及调试代码期间的交互程度。
现在我准备从头讲解制作两个简单程序的过程。第一个程序是传统的“Hello World”,第二个程序用来检查是否一切都得到正确的设置,以便能够使用我提供的图形库。我有意将这些程序设计得很简单,目的是为了便于我们将精力放在从源代码和库创建出程序的过程上。随着讲解的逐渐深入,我会加入一些对你而言全新的信息—如果你此前熟悉的语言完全不同于C++的话。
1.1 创建“Hello World”程序
第一步启动IDE。我总是让IDE图标呆在操作系统桌面上。如果从光盘上安装软件时你接受某一选项,就可以在桌面的某个地方找到图1-1所示的图标。

如果选择了别的选项,你将需要以不同的方式启动MDS。启动MDS之后,你应该在屏幕上看到图1-2所示窗体。

图1-2 启动MDS后的界面
那些形形色色的面板(panes)的大小是可以调整的,随着学习的不断进展,你会明白它们各自的作用。倘若你熟悉IDE的使用,或许可以认识屏幕上的大多数东西。如果你点击下拉菜单,你会注意到大多数条目都是灰色的,并且大多数图标也是灰色的。将鼠标指针悬停在图标上就可以看到其工具提示(tool-tip),当然,前提是你没有禁用该特性。这些工具提示都很简短,不过我发现将默认热键(default hotkey)包含在提示中的确是个有意义的特性。
下一个步骤是进入Project菜单,选择New Project(若你偏爱使用热键,则可按下Ctrl+N)。
你将看见一个图1-3所示的数据输入窗口。
图1-3 数据输入窗口
默认的项目类型是控制台应用程序(console application),它也是你阅读本书大部分篇幅所需创建的项目类型。你需要告诉IDE该项目的名字和项目文件的位置。只要从一开始就确定好位置,就不易出错。看看图1-3所示的文本框(text box),你会发现右侧有个灰色的小按钮(button)。点击此按钮,可导航至适当的子目录。如果你安装了MDS,该目录默认为C:\tutorial\chapter_1。现在转到上面的文本框,为你的项目取个名字。键入hello_world(注意MDS不能正确处理包含空格的文件名)并点击OK按钮。
接下来,你需要为源代码(source code,这一恰当的术语用于表示我们所编写的东西,编译器会将它转换成目标代码(object code))创建一个文件。从File菜单中选择New菜单项,你将看到图1-4所示对话框。

图1-4 创建一个文件对话框
默认项就是我们想要的。你正在创建C/C++源文件并将它添加到项目中。而文件的位置与你存放项目本身的位置相同。你要做的全部事情只是为文件命名。将hellomain输入File name文本框。在打开FileView树(在左侧的面板中)之后,我的工作窗体的左上角如图1-5所示。

图1-5 打开File View树后的工作窗体
在文件面板(其右侧深灰色边缘区域中有个表示代码行号的“1”)中输入以下代码:

确信在闭花括号后按下了Enter键,以便使文件以一个换行字符结束。
当输入代码时,MDS通过使用颜色尽量向你提供帮助。当输入一个不匹配的括号(圆括号、花括号或方括号)时,它首先会将其显示为红色。你可以使用Ctrl+B从一个括号跳转到与其匹配的另一个括号(如果存在的话)。MDS编辑器还支持代码折叠(即能够将代码隐藏起来,从而只显示一个头元素)。点击“int main”左边的减号试试看,你就会明白我的意思。在这个例子中该功能不是很有用,但是当你将注意力集中于某些其他代码片断、希望隐藏不相干的细节时,它就可以派上用场了。
在输入好代码后,从Build菜单下选择Compile菜单项。如果你正确地操作了每一步,你应该在底部面板中看到
![]()
倘若你忘记在源代码的结束花括号后按下Enter,你将会看到一条警告消息。之所以发出一条警告,是因为一个C++文件可以包含一些别的文件,而在文件的末尾少输入一个空行,就可能会导致编译器将下一行代码(即另一个文件中的第一行代码)附加到末尾的那一行代码后面,显然这极可能出问题。如果过去你习惯于使用一种解释型语言,例如Python,你可能会纳闷到目前为止究竟都得到了什么。是这样的,一个叫做编译器的工具把你的文本(源代码)转换成了一种连接器(linker)可以用来产生可执行程序的形式(目标代码)。我们很快就会考察源代码的其余部分,不过眼下我希望你生成一个可执行程序并运行它。你可以一步一步来,通过从Build菜单下选择Build菜单项,然后从同一菜单中选择Execute菜单项。或者,你也可以只选择Build and Execute菜单项。选择权尽在你手。你甚至可以直接选择Execute,这时MDS会询问你是否希望生成(build)可执行文件。
无论采用何种方法执行程序,最后你应该看到如图1-6所示的控制台窗口。

图1-6 控制台窗口
MDS插入一条结束消息(在程序执行结束之后),这样,该窗口将保持打开状态直到你看好输出结果为止。“Terminated with return code 0”这一消息意味着程序圆满完成。
在继续学习之前,我希望你先尝试几件事情。首先,我希望你改变项目的设置。从Project菜单下选择Settings菜单项。现在选择Compile选项卡然后选中除最后一项(把所有警告都视作错误的做法杀伤力通常过大)以外的所有的警告框。其他选项则暂时维持原样。
可以针对调试版(debug version)和发行版(release version)分别设置选项。在程序开发过程中,我们通常愿意接受较低性能和体积较大的程序文件,以便在程序运行期间遭遇问题时换取更多的帮助(译注:因调试版中含各种调试信息)。然而,当我们准备将程序发布给他人时,我们就不再想要一个很大、很慢的程序了,因此制作一个发行版。通常发行版体积更小并可能更快一点儿,因为编译器会努力剥除所有不必要的细枝末节。
不必关注Project Settings对话框中的其他选项卡。我们只会用到Compile和Link面板。
下一步,我希望你花些时间对源代码做一些实验(尝试添加几行额外的输出、省略分号,以及引入其他打字错误等),直至你对编译、生成和执行信心十足为止。由于你将要和这些工具一起度过漫长的日子,因此花一点时间熟悉它们是值得的。这也是我们从这样的一个无聊的小程序开始讲解的原因之一:它允许我们在使用手头工具编写更具有实际意义的程序之前,先专注于掌握工具的基本要素。







