你好,我是王健伟。
俗话说,“工欲善其事,必先利其器”,今天我们就来说说编程环境的搭建。
搭建一个良好的编程环境对于后续的学习非常重要,所谓好的编程环境,是指这个编程环境易学,易用,让使用者很少出错,即便出现错误也能根据一些信息快速定位出错的位置。
偶尔会听到有人建议开发者用纯记事本写程序而不采用任何编程环境,通过这样的方式锻炼自己编写程序的能力。这种说法是令人匪夷所思的!
这节课,我们就从C++编程环境的搭建,创建最基本的能运行的C++程序以及Visual Studio中程序的调试方法这几个方面,帮助你快速搞定一个C++语言的编程环境,让后续的学习更加便捷、高效。
C++编程环境搭建
咱们这门课所展示的各种范例,会在Windows操作系统平台上进行演示。对于演示环境的要求不高,我一般使用Visual Studio,版本上不建议使用比Visual Studio 2005更老的版本,以免在太老的开发环境下出现某些范例无法成功演示的窘境。注意,能使用高版本,尽量不使用低版本。
这门课程采用的演示环境是Visual Studio 2022集成开发环境。该环境使用简单,调试方便,这意味着讲解和演示会变得特别方便,同时也能大大降低你对一些复杂知识的理解难度。
为了让你顺利地开始学习,在这里将详细地阐述一下Visual Studio 2022的安装过程(在线安装,需要网络支持)。
Visual Studio 2022是目前微软公司推出的最新版本集成开发环境,可以直接访问网站。这个页面就有Visual Studio 2022的下载,分为三个版本:社区版(Community)、专业版(Professional)、企业版(Enterprise)。其中社区版是可以免费使用的,下载社区版即可。
在图1中单击Community 2022,此时会将一个大概2MB的可执行文件下载到自己的电脑上,这个可执行文件实际是个下载器,运行该下载器,它会按步骤提示下载和安装Visual Studio 2022。
这种安装方式属于在线下载和安装,整个过程可能会持续半小时到数小时之间,安装时长主要取决于网速和计算机速度。
安装过程中会出现选择框,让用户选择安装哪些组件,如图2所示。
这里只选择“使用C++的桌面开发”以及“通用Windows平台开发”,在选择这两个选项时,安装界面右侧会出现额外的安装详细信息,里面有很多可以勾选的项,保持默认,不做进一步勾选。
请记住一个原则:只安装看上去和C++开发有关的选项,即便错过了一些选项,以后可以重复这个步骤补充安装,但切不可图省事而完全安装,因为那可能会耗费数十甚至上百GB的磁盘空间,完全没有必要。
在图2左侧靠下的“位置”处,可以单击“更改”,尽量把安装位置设置到非C盘(非系统盘)的位置以尽量减少对系统盘空间的耗费,系统盘空间非常宝贵,一旦空间耗尽可能会导致计算机运行变慢甚至崩溃等各种问题。这一点也请切记!
安装完成后,很可能在计算机的桌面上看不到Visual Studio 2022程序图标,此时必须到操作系统左下角,单击“开始”按钮,然后往下翻,一直找到Visual Studio 2022图标,如图3所示,用鼠标单击并按住图形部分拖动到桌面上以创建桌面快捷方式,下次双击桌面上的该图标即可运行Visual Studio 2022。
双击Visual Studio 2022图标以运行Visual Studio 2022,启动界面如图4所示。
单击图4的右下角的“继续但无需代码”链接直接进入到开发环境中,因为这是个集成开发环境,可以开发很多种计算机编程语言所编写的代码,所以第一步先设置开发环境为C++语言,在开发环境中,进行这样几步操作。
- 选择菜单“工具、导入和导出设置”命令;
- 在弹出的对话框中,选择最下面的“重置所有设置”选项并单击“下一步”按钮;
- 选择下面的“否,仅重置设置,从而覆盖当前设置”项并单击“下一步”按钮;
- 选择“Visual C++”选项并单击“完成”按钮。
等待数秒时间,设置完成后单击“关闭”按钮并退出整个Visual Studio 2022,就完成了将开发环境设置为C++语言的操作步骤。
Visual Studio 2022会不定时更新,当需要更新时,在Visual Studio 2022界面上会有提示。单击提示会出现一些操作步骤,按照操作步骤进行操作就可以在线更新。值得一提的是,可能需要注册一个账号才能进行正常的在线更新,我们直接根据系统提示进行注册即可。
创建最基本的能运行的C++程序
安装好之后,为了后续做范例演示的方便,我们要做的第一件事就是创建一个最基本的能运行的C++程序。
在Visual Studio 2022中,只需要点几下菜单,就能创建出一个最基本的能运行的C++程序,其他的Visual Studio版本操作也类似,你可以参考下面的步骤。
- 启动Visual Studio 2022;
- 在启动界面,单击右下角“创建新项目”选项,会弹出如图5所示的对话框,选择“控制台应用”选项,并单击“下一步”按钮;
- 让系统新创建一个项目,请记住,Visual Studio 2022中,任何一个可执行程序都是通过新建一个项目的方式得来,所以新建一个项目是必须的。在图6中,我们还需要填写一些项目的配置信息:项目名称、位置以及解决方案名称。
项目名称:为创建的项目起的名字,例如输入MyProject。
位置:保存此项目的位置,可以直接输入一个目录路径,或单击后面的“…”按钮,选择一个已存在的目录名,这里导航到事先创建好的路径:C:\Users\KuangXiang\Desktop\C++(可根据需要自由选择路径)。
解决方案名称:一个解决方案里可以包含多个项目,Visual Studio开发环境硬性要求一个项目必须被包含在一个解决方案里。同时,一个项目最终可以生成一个可执行程序,所以创建MyProject项目时,Visual Studio 2022会连带创建一个解决方案,并让MyProject项目包含在该解决方案里。
解决方案名称这里输入MySolution。
4. 单击图6右下角的 “创建”按钮,系统就会开始创建项目,几秒钟后,系统会创建好一个叫MyProject的项目,正好位于MySolution解决方案之下。如图7所示。
因版本不断升级变化,每个人看到的界面内容可能会略有差异,这不要紧,不过一定注意,不要随意改动内容,以免出错。
如果你使用的是其他Visual Studio版本,创建项目的步骤大同小异,只要能创建一个基于控制台的C++程序项目供后续学习使用即可。如果不确定自己使用的Visual Studio版本如何创建项目,通过搜索引擎搜索诸如“Visual Studio 2022创建新C++项目”这样的关键词组合就能找到详细答案。
之后,展开图7左侧的“源文件”文件夹的树状分支,会发现其中包含一个MyProject.cpp文件。这是系统依据图6所起的项目名称生成的一个源码文件,里面已经包含一些C++源码,其实目前系统生成的该项目已经能够编译并运行了。
项目要先编译、链接、生成可执行程序,然后才能运行。这一整套动作用快捷键Ctrl+F5就可以完成,该快捷键在很多Visual Studio版本中通用,记住它。如果出现一个提示窗口,可以按提示窗口中的Yes,也可以直接按回车键进行确认。
如果按Ctrl+F5键之后Visual Studio 2022没任何反应,可能是这个快捷键被其他软件所占用,此时可以用Visual Studio 2022中的菜单命令代替,依次单击如图8所示的菜单命令“调试、开始执行(不调试)”命令也能达到编译、链接、生成可执行程序并开始执行的效果。
可执行程序运行起来后,出现一个背景为黑色的窗口,其中显示Hello World字符串如图9所示。
因为刚才创建项目时选择的是“控制台应用”,这种“控制台应用”项目运行后显示的正是一个黑色窗口,该窗口中会显示程序执行的结果,通过该窗口显示运行结果完全能够满足本课程的学习要求。
此时按任意键,黑窗口就会关闭。可执行程序执行结果中之所以会显示Hello World!,是因为在MyProject.cpp源码文件中有如图10所示代码行的缘故,代码的含义属于C++的基础开发知识,相信你一定非常熟悉,在这里就不多说了。
Visual Studio中程序的调试方法
一切准备就绪后,我们讲述一下程序调试的方法,毕竟尤其是新手,在编写程序的过程中会经常犯错误,例如程序执行的效果并不是自己所期望的,程序运行崩溃,或者在阅读他人代码时要理清代码的执行流程等,都需要对程序进行调试。
普通的断点调试(跟踪调试)
首先,我介绍一下如何在Visual Studio 2022(其他Visual Studio版本也类似)中进行程序的调试。
- 快捷键F9(对应菜单“调试→切换断点”),用于给光标所在的行增加断点(设置断点)或取消该行已有的断点,断点行最前面会有一个红色的小圆球表示该行有一个断点,如图11所示,可以通过将光标定位到多个行并每次都按F9来为多个行增加断点。
- 快捷键F5(对应菜单“调试→开始调试”),用于开始执行程序,遇到第一个断点行就停下来,如图12所示,程序停到了第8行,这个红色圆球中间多了一个向右指向的黄色小箭头,表示程序执行流程停止到了这一行(虽然停止到了这一行,但是此刻这一行还没有被执行,表示即将要执行)。
- 此时,因为程序执行流程已经停了下来,处于程序员(我们)的控制之中,所以就在此刻,可以多次使用快捷键F10(对应菜单“调试→逐过程”),从当前停下来的这行开始,一行一行的执行下去,一边逐行执行,一边可以观察程序的执行走向(比如如果是条件语句就会因为不同的条件执行不同的分支)以及各种变量的值,从而达到调试的目的。
- 如果断点停在了一个自定义函数调用行,并且希望跟踪到这个函数里面的语句行中去,可以使用快捷键F11(对应菜单“调试→逐语句”),跳入到函数中继续跟踪调试。如果想从当前所在的函数跳出去,可以使用快捷键Shift+F11(对应菜单“调试→跳出”),就能够跳回到该函数的调用处并继续往下跟踪调试。
学会调试时查看内存中的内容
在程序调试的过程中,学会查看内存中的内容对于深入掌握C/C++语言编程好处巨大。比如有时候需要看一看变量在内存中是如何存储的,或者某一块内存地址保存的是什么内容之类的问题,就都需要查看内存中的内容。
那么具体要怎么实现呢?
举个例子。下面是两行演示代码,按F9把断点设置到如下的printf行。
按F5执行整个程序,使断点停在printf行上,那么此时此刻,就相当于处在了调试程序中,如图13所示。
在此种状态下,按下快捷键alt+6或者选择菜单“调试→窗口→内存→内存1”,则在整个Visual Studio 2022的下方,就打开了内存查看窗口,如图14所示。
我们只需要在图14左上角位置“地址”右侧的编辑框中输入地址符&,后面跟要查看的变量名,然后按一下回车(比如这里输入&aaa并按回车),就可以看该变量的地址所代表的内存中的内容了。
或者,在图13所示的第78行,双击选中aaa这个变量名,直接按住鼠标左键往图14中左上角位置“地址”右侧的编辑框中拖动并按回车,也能达到查看aaa变量所代表的内存中内容的目的,如图15所示。
图15所示的内存窗口中,左上角的“地址”部分显示的0x00D3F288是变量aaa所代表的内存地址。
往下看,分成三部分。
左侧部分显示的内存地址,是变量aaa的地址以及附近的内存地址。
中间部分显示的是内存地址中保存的十六进制数字内容。
没错,内存中保存的数据都是二进制数据,为了方便观察,Visual Studio 2022中把这些二进制数据以十六进制形式显示出来,四位二进制数字显示为一位十六进制数字。
右侧部分显示的是内存中的十六进制数字所代表的一些字符,有些可显示字符会显示出来,对于不可显示的字符就用.来代替。
程序代码中的“safasdfa\0def”字样,与在中间的内存中的内容进行比较,可以看到,“\0”这个转义字符在内存中显示的十六进制数字为00,其它的字符比如“a”这个字符在内存中显示的十六进制数字为61,十六进制的61正好是十进制的97,而十进制的97正好就是字符“a”的ASCII码。
所以,在内存中存放一个字符时,存放的其实就是该字符的ASCII码。
快速监视窗口
最后,我们来说一下如何使用快速监视窗口。当运行着的程序停到断点处时,也可以按Shift+F9(对应菜单:调试→快速监视),并在其中输入要监视的变量内容,这样也是可以看到变量中所保存的数据的。
比如输入&aaa并按回车,可以看到aaa的地址,地址中的内容也是清晰可见的,如图16所示。
小结
到这里,今天的内容就讲解的差不多了。我们来总结一下。
这节课,我们对C++编程环境的搭建进行了详细讲解。主要包括Visual Studio 2022集成开发环境的详细安装步骤,在Visual Studio 2022集成开发环境中创建一个最基本的能够运行的C++ 程序的方法,以及在Visual Studio中程序的调试方法。
关于调试方法,有三个比较重要的方面。
- 在某行增加断点并执行到断点行、逐行执行程序、跳入到函数中继续跟踪以及从函数中跳出来;
- 调试时在内存窗口查看内存中的内容;
- 利用快速监视窗口查看变量的地址、值等。
C++编程环境虽然有很多,但对于初学者,编程环境的搭建和使用越简单越好。我不赞同在开始学习编程时花大量时间去学习诸如GDB这样的命令行调试工具,毕竟难以使用并且需要记忆很多命令。与此同时, 我们节省出精力来,去学习更重要的内容——C++程序的编写,不是更好嘛?
掌握了Visual Studio 2022中程序的调试方法,就可以在后面的学习中利用这些手段帮助自己快速地看懂别人所写的代码、快速地找到自己代码中存在的问题等,从而达到大幅度加速掌握新知识的效果。
从下个版块开始,我们就要真正进入到C++数据结构与算法知识的学习中去了,我将讲解各种常用的数据结构和算法。在此之前,强烈建议你把Visual Studio开发环境搭建好,方便后续动手实践每节课所讲的内容,让我们的学习效果事半功倍。
归纳思考
- Visual Studio 2022集成开发环境中常用的快捷键有哪些?
- 如何在调试程序时观察变量的内容?
- 如何在调试程序时打开内存窗口以观察内存中的内容?
欢迎你在留言区和我互动。如果觉得有所收获,也可以分享给更多的朋友一起学习。我们下一讲见!
- 奕 👍(4) 💬(1)
Mac环境大家可以使用VScode或者clion
2023-02-18 - Geek_b3775c 👍(3) 💬(3)
为啥把算法复杂度讲解的那两篇删掉了,我还想再看一遍呢
2023-03-13 - plh 👍(2) 💬(1)
c++ 环境的搭建应该属于 c++ 程序员的基本功.
2023-04-25 - 1043 👍(0) 💬(2)
请问王老师,如果初中生学好老师的这套算法和数据结构再外加cpp语言基本功,我应该再买一本cpp新经典,老师能否指点一下,具体买哪一本吗?还是一套五本都买来通读更有利于学生参加信奥赛水平?
2023-03-30 - Yj.yolo 👍(0) 💬(1)
我真的很爱了,以前关于调试时候出现问题只能查,但是没有哪篇文章将VS基础调试讲的这么清楚详细,相见恨晚!
2023-03-15 - 阿阳 👍(0) 💬(1)
老师好,今后使用vs建立解决方案,在解决方案里建立项目,会自动生成一些项目配置文件。如果想把代码放在github上,我想建立个解决方案,然后在这个方案下为每一节课建立个项目,这种情况下该如何配置gitignore文件呢?
2023-02-16