1.4 C语言开发环境
1.4.1 C语言的编译器
好了,现在编译器“粉墨登场”了。编译器是干什么的呢?它其实就是个“翻译官”,能将C语言翻译成机器语言。计算机的CPU(中央处理器)只能识别和运算二进制码(由0和1组成的代码,称为机器语言)。而用户想要和计算机交流,只能使用二进制码与其对话,例如早期的计算机没有键盘这样的输入设备,开发者们使用带孔的纸质长带与计算机交流,其中有孔部分表示1,无孔部分表示0,一个程序需要使用很长的一条纸带,上面布满了密密麻麻的孔位,一旦有孔位打错,就前功尽弃,需重新制作。可想而知是多么的麻烦。同时,也必须向早期的开发者们致敬,他们的细致与敬业精神让我们无比钦佩。
值得欣慰的是,现在有了键盘这样的高级输入设备,使开发者摒弃了制作带孔纸带来与计算机交流的痛苦方式。但是使用二进制又会方便吗?例如想让程序能够计算1和2的和,对着计算机大喊或者用键盘输入一句话:“请告诉我1加2等于几?”,计算机是不会有反应的。不过这不能怪它,因为它根本不知道我们的用意,更确切地说是它不懂我们的语言,它只认识二进制码,所以我们只能把这句话或文字以二进制的方式告诉它。如何把我们的文字变成计算机能认识的二进制码,这就得靠编译器来帮忙了。
对C程序如何工作的认识有点清晰了吧?我们平常说的用的都是人类语言,把人类语言用C的标准来规范和书写后就成了C的程序语言(C语言),然后通过编译器把C语言翻译成计算机所能识别的机器语言,这就是为什么说编译器就是一个“翻译官”了。
那么编译器是不是就一个呢?也不是,从C语言诞生至今,出现了许许多多的编译器,这些编译器在不同的时间由不同的厂家和公司以及开发者个人实现出来,其中最主要的、比较流行的和使用比较广泛的就三类:TC、MS C和GCC。
TC是Turbo C的简称,Turbo C是美国Borland公司的产品,该公司在1987年首次推出Turbo C 1.0产品。不过现在使用TC的开发人员较少,没有下面的两个使用广泛。
MS C是Microsoft C的简称,它是鼎鼎大名的美国微软公司的产品,不过它一般都是在集成开发环境(IDE)中来使用,MS C很好地支持C89和C90标准,但对C99标准的支持还不够完美。
GCC是GNU C Compiler的简称,GNU是一个自由的操作系统,其内容软件完全以自由、开放的方式发布。GCC原本作为GNU操作系统的官方编译器,现已被大多数类UNIX操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows操作系统。同时,由于它对C99标准支持得比较好,所以特别适合C语言爱好者来学习和使用。本书采用GCC作为案例的编译器。
1.4.2 IDE开发环境
有不少初学者在学习编译器时,会被编译器、编辑软件以及集成开发环境(IDE)搞得晕头转向。下面就来帮大家理一理,例如要编写一个C语言程序,就必然要书写代码,那么代码在哪里书写呢?这时就需要一个文本编辑软件。例如在Windows系统中新建并打开一个记事本,然后就可以在这个记事本中进行代码的书写。书写完成保存之后,就得到一个C程序的源文件。但这个源文件不能在计算机中执行,我们还得借助编译器对这个源文件进行编译,才能形成计算机所能识别的二进制码(机器语言),这时才能在计算机中执行。所以要想得到并运行一个可执行的C程序,得经过三步:①在编辑软件中编写代码,得到C的源文件;②使用编译器对源文件进行编译,得到可执行文件;③双击可执行文件,让程序在计算机上运行。
那么集成开发环境(IDE)又是干什么的呢?简单地说,它就是把上面的三步合并在一起,把代码的编辑、文件的编译以及最后的文件执行全部集成起来。通过简便的操作就能自动地完成三步操作,这样就极大地方便了程序的开发。集成开发环境往往还带有调试的功能,如果程序的运行结果出现错误或异常,可以轻松地对源文件中的代码进行定位和跟踪。
那IDE又有哪些呢?例如基于TC编译器的Turbo C 2.0,基于MS C的Visual C++、Visual Studio系列,基于GCC的CFree、CodeBlocks、Dev C++,使用在苹果系统里的XCode等,这些都是集成开发环境。
但是,本书所采用的开发环境却是Windows+记事本+GCC编译器。为什么没有使用集成开发环境?原因有三点:①我们是学习C语言的,而不是学习集成开发环境的,要把精力更多地投入在对C语言的学习上,通过手工输入编译命令、调整编译选项,可以让读者更了解程序的编译处理过程,而且使用GCC编译器可以更好地兼容C99标准。②虽然使用集成开发环境能大大提高程序的开发效率,但对初学C语言的人来说未必是好事,例如集成开发环境所提供的代码自动补全和纠错功能,会造成对语言细节的疏忽,对集成开发环境形成高度的依赖,离开了集成开发环境,就不会写代码了或者写出来的代码错误百出。③软件体积小,对机器的配置要求不高,不论大家的机器配置如何,都可以满足这样的C语言开发环境要求。
现在就开始动手搭建我们的开发环境吧。首先是编辑器,本书使用的是Notepad++(官网地址为https://notepad-plus.en.softonic.com/),它是一个开源和免费的文本编辑软件(俗称加强版的记事本),下载和安装都非常简单,本书所使用的是V7.7 32位的版本,界面如图1.2所示。
下面开始安装编译器,为了在Windows上安装GCC,我们进入MinGW的下载页面(https://sourceforge.net/projects/mingw/files/),单击右侧“Recommended Projects”的“MinGW-w64 - for 32 and 64 bit Windows”链接,下载最新版本的MinGW在线安装程序。下载完成后,双击该文件进行安装。图1.3~图1.8为GCC安装的详细过程。
图1.2 编辑器Notepad++
如图1.3所示,进入MinGW安装界面,单击Next按钮。
图1.3 MinGW在线安装的首界面
图1.4所示为MinGW的设置界面,当前安装的版本为8.1.0,单击Next按钮进行下一步。
图1.4 MinGW的设置界面
图1.5所示为安装路径选择界面,选择路径后单击Next按钮。
图1.5 安装路径界面
下载安装文件界面如图1.6所示,开始联网下载文件,需保持网络畅通。
图1.6 下载安装文件界面
图1.7为安装文件下载完成界面,下载完成后单击Next按钮。
图1.7 文件下载完成界面
软件安装完成的界面如图1.8所示,单击Finish按钮完成软件的安装。
为了后面开发时能更方便地使用GCC,在安装完成后,我们还需配置Windows系统的环境变量。图1.9~图1.13为环境变量的配置过程。
在桌面的计算机文件夹处右击,在弹出的快捷菜单中选择“属性”菜单项,弹出如图1.9所示的窗口,单击窗口左侧的高级系统设置项,弹出如图1.10所示的“系统属性”对话框。
图1.8 安装完成界面
图1.9 “系统属性”对话框
在图1.10中单击“环境变量”按钮,弹出如图1.11所示的“环境变量”对话框。
在“环境变量”对话框中单击“新建”按钮,弹出如图1.12所示的“新建用户变量”对话框,在其中对变量名和变量值进行设置,变量名为PATH,变量值为GCC安装目录中bin文件夹的路径,单击“确定”按钮。再新建一个名为INCLUDE的环境变量,变量值为GCC安装目录中include文件夹的路径,单击“确定”按钮。
图1.10 “系统属性”对话框
图1.11 “环境变量”对话框
图1.12 “新建用户变量”对话框1
图1.13 “新建用户变量”对话框2
需要说明的是,在图1.11中新建环境变量时,也可以选择新建系统变量,这样创建的环境变量可被系统中所有用户所使用。如果对于系统中只有一个用户,两者区别不大。现在编译器已经安装并且配置好了环境变量,下面来测试一下是否成功吧!同时按下键盘上的Windows徽标键和R键,启动“运行”窗口,如图1.14所示。在编辑框中输入cmd,单击“确定”按钮,打开了一个类似DOS的控制台窗口,如图1.15所示。在窗口中的命令提示符后输入命令:gcc –v,来查看GCC的版本信息,如果没有错误提示,并且在如图1.16所示的窗口最底部看到了当前GCC的版本为8.1.0的信息,则表明GCC安装成功了。
图1.14 “运行”窗口
图1.15 命令输入窗口
至此C语言的开发环境搭建完毕,下面我们就可以开始动手编写第一个C语言的程序了。
图1.16 GCC信息窗口