C++基础教程
——
C语言部分卷1C语言基础语法
节2VS的安装和配置

最新版本V2.0
王道C++团队
COPYRIGHT ⓒ 2021-2024. 王道版权所有

概述

Gn!

对于一名C语言程序员而言,进行C语言程序的开发一般需要一个文本编辑器加上一个编译器就足够了。但为了方便起见,我们选择使用集成开发环境——Visual Studio(简称VS)。

什么是集成开发环境?

集成开发环境(Integrated Development Environment),也普遍简称IDE,指的是一个提供用于软件开发的全套工具的环境。这些工具通常包括代码的文本编辑器、编译器、调试器,以及其他用于简化软件开发过程的工具和库。

IDE能够让开发者在一个统一的界面下进行代码编写、调试、测试等多种任务,从而提高效率。

一些非常著名的IDE:

  1. Java:Eclipse、MyEclipse、IntelliJ IDEA

  2. Python:PyCharm

以上是一些语言专用的IDE,像我们今天要讲的Visual Studio以及它的好兄弟Visual Studio Code则可以通过安装插件,扩展等方式,理论上作为所有语言的集成开发环境。

其中VSCode作为一个轻量级的编辑器,它更适合用于开发前端、脚本开发等场景。

VS则功能更强大,更适用于处理大型项目。VS是比较常见的C/C++开发使用的IDE。

最后,我们要强调的是无论使用什么IDE还是其它编辑器,归根结底都只是工具,工具的目的是提升效率,而不是根本。

到了Linux阶段以及很多公司当中,我们都会直接在一个文本编辑器中编写C语言代码,所以大家也不要太过于依赖VS。

安装Visual Studio

Gn!

下面讲一下如何安装VS,按照步骤完成即可。这里提供两种方式安装:

  1. 在线引导安装

  2. 离线安装

建议优先选择第一种安装方式,两种方式所需要的安装文件都可以在百度网盘中获取:

链接:https://pan.baidu.com/s/1wsHjfJRlNJ7G3DSi5dm4yA?pwd=mu6f

提取码:mu6f

下载引导安装包

Gn!

引导安装包可以从官网下载:https://visualstudio.microsoft.com/zh-hans/downloads/

选择下载社区版Community即可

VS下载引导安装包

如果是Mac笔记本,可以选择下方的Mac版本:

VS下载引导安装包-Mac版

引导安装包直接双击打开,即可开始VS的安装。

在线安装(推荐)

Gn!

双击引导安装包后,就会进入工作负荷以及安装位置的选择:

  1. 工作负荷选择(也就是选择特定开发任务的工具组件集合):

    VS安装-工作负荷选择

    直接按照图示中选择C++桌面开发即可,其他的不要选择。

  2. 安装位置选择:

    VS安装-安装位置选择

    建议将三个路径放在同一级目录下,这样便于管理,可以参考图片中给出的路径。

    建议安装目录不要放在系统盘下,VS作为IDE会占用较多磁盘空间。

  3. 上述设置完成后,点击安装即可。安装过程会下载较多资源,请耐心等待。

    VS安装-联网下载安装

    此过程需要连接微软服务器进行在线安装,通常情况下即便不挂梯子也能正常完成安装。

  4. 安装完成后,建议重启电脑。

注意事项

  1. 安装完成后,VS一般不会自动创建桌面快捷方式,可以在开始菜单中找到VS,点击启动。建议将它发送桌面快捷方式或者钉到任务栏,后续一段时间我们会经常使用VS。

  2. 第一次启动VS,会提示登录微软账号,这一步相当于激活VS。建议登录,如果没有微软账户,建议注册一个。

    VS安装-登录微软账号

  3. 如果在线安装失败(比如碰到始终卡顿在某个进度,或者直接失败),这是微软服务器的问题,此时可以考虑离线安装VS。

离线安装(后补方案)

Gn!

如果实在没有办法在线成功安装,可以考虑离线安装,按照以下步骤完成。

  1. 通过百度网盘获取离线安装包。

  2. 解压离线安装压缩包,进入解压后的文件夹目录,在资源管理器的文件路径栏输入"cmd",然后回车

    离线安装VS-步骤1

    此时会在此安装包目录下,打开Windows命令行,如下图所示:

    VS离线安装-步骤2

  3. 在打开的命令行中输入以下指令:

    VS离线安装指令

    然后回车,即可开始安装。

  4. 开始安装后,仍然进入工作负荷和安装目录的选择。此时选择安装"使用C++的桌面开发"的工作负荷,以及修改一下安装目录即可。

  5. 此安装过程全程无需联网,耐心等待安装完成即可。

Rd!

注:以上操作都无法完成安装的话,可以直接求助老师。

使用Visual Studio进行开发

Gn!

好了,到此你已经成功安装了VS,距离成为一名真正的C程序员又进了一大步。

下面我们来简单介绍一下如何使用VS进行开发,写出我们第一个C程序的演示代码——HelloWorld!。

创建项目

Gn!

第一次打开VS,界面如下图所示:

第一次打开VS的效果图

推荐直接选择"继续但无需代码",然后就进入了VS主界面:

VS主界面

注:初次进入还有一个新特性提醒界面,已经被我关闭了。

点击VS左上角菜单栏的"文件 --> 新建 --> 项目"

使用VS创建项目

然后进入创建新项目的选择,选择创建"控制台应用",因为我们程序的输出结果要依赖于控制台,所以创建控制台应用。

创建控制台应用

随后就进入了创建新项目的配置页面:

配置新项目页面

到这一步就是整个创建项目的流程,但最后一步"配置新项目"我们需要详细谈一谈。

配置项目

Gn!

上图的配置页面中可以看到,我们主要可以调整三个选择:

  1. 项目名称。

  2. 位置。

  3. 解决方案名称。

我们先重点来讲一下VS当中项目(project)解决方案(solution),理解它们之间的关系是使用VS的一个重点。

项目 VS 解决方案(重要)

Gn!

解决方案:

解决方案是VS当中进行代码开发的顶层结构,它是一个或多个项目的容器。用于协调多个项目之间的关系和依赖性,尤其是在大型应用程序开发中。解决方案不仅仅是项目的简单列表,它还包括项目之间的依赖关系、编译顺序以及其他元数据。

解决方案的文件夹下通常会自动生成一个扩展名为.sln的文件,来保存这些项目之间关系的信息。

项目:

项目是一个C程序构建过程中的基本组织单元。项目中会包含:源代码文件、资源文件(如图片或数据文件)、配置信息文件等。

通俗的说:

VS中的一个项目是进行开发的基本单元,一个解决方案至少有一个项目,也可以包含多个项目,这些项目可能相互依赖。解决方案会管理这些多个项目的关系。

如果你熟悉Java开发,那么可以使用IDEA和VS做一个类比:

  1. IDEA的module(模块)是开发的基本单元,project(工程)是模块的容器,一个工程最少有一个模块,但也可以有多个模块。

  2. VS的项目是开发的基本单元,解决方案是项目的容器,一个解决方案至少有一个项目,但也可以有多个项目。

命名

Gn!

搞清楚它们之间的关系后,就要稍微浅谈一下命名了:解决方案和项目应该如何命名呢?

首先,我们要说一个大的原则,以后大家无论进行什么语言的程序开发,在遇到命名时,都一定会存在一个大前提:"简洁明了、见名知意"!

也就是说,这个命名应当明确表达功能和作用,这是最重要的原则。

其次,一般来说,名字都应该由合法的英文单词组成,不应出现中文或者中文拼音。

最后,解决方案和项目命名的普遍约定是:

  1. 采用大驼峰命名法(也叫帕斯卡命名法)。每个单词的首字母都大写,包括第一个单词,各个单词之间直接连接不用加下划线等符号。例如:FirstName、MyProgram等。

  2. 尽量避免出现空格,点、横杆等特殊字符。命名仅由英文字符和数字组成。

最后,关于命名并没有强制的一定的约束,具体还是要看各公司各研发单位的习惯而定。上面给出的只是大家普遍遵守的一些约定。

注意事项

为了让大家更清晰的看代码,上课时我会把解决方案、项目的命名前带上序号,比如:

  1. "00_HelloWorld":第一个项目,这个项目叫HelloWorld。

  2. "50C_Day01":第50期,C语言部分内容的第一天。

但一般而言,这种序号在实际开发中不会使用。

完成项目创建

Gn!

上面的所有内容都了解后,就可以完成一个项目的创建了,大家参考我的命名和配置:

VS项目创建配置图

具体的解释都已经在图中贴出了,设置完成后,点击创建即可完成项目创建。

创建源文件

Gn!

完成项目创建后,还需要在项目下创建C语言源文件,在一个C语言的源文件当中才能够开始写C语言代码。

点击创建项目后,首先你会直接进入以下页面:

VS项目主界面-HelloWorld

VS会默认创建一个"HelloWorld.cpp"文件,这是一个C++源代码文件,但我们学习的是C语言,所以我们可以直接删除这个文件。

然后"右键点击源文件 --> 添加 --> 新建项"

VS新建项

此时可能会弹出以下两种窗口:

新建项选择-情况1新建项选择-情况2

无论出现哪一种情况都一样,直接修改名字为"xxx.c",即可在源文件下面创建一个C语言源文件。

其中"xxx"代表此源文件的名字,关于源文件的命名,建议大家采取以下策略:

  1. C语言源文件通常以".c"结尾。

  2. 见名知意,使用合法的英文单词。

  3. 单词字母全部小写,如果文件名由多个单词组成,通常使用下划线"_"来分隔这些单词。

  4. 不要出现下划线以外的特殊字符。原则上只使用下划线、英文字母和数字作为命名且不要用数字开头。

举几个例子:

  1. a.c

  2. main.c

  3. hello.c

  4. hello_world.c

  5. ...

.c和.cpp的区别

在VS当中,用.cpp写代码会使用C++编译器来编译代码,遵循C++语言标准。

而使用.c写代码会使用C编译器来编译代码,遵循C语言标准。

大家都知道C++就是以C语言为基础扩展而来的编程语言,C++是兼容C语言的。所以理论上来说,用C++编译器来编译C语言代码,也是可以照常编译执行的。

但我们要注意的是:

  1. C++并不是完全兼容C语言的,C语言中存在极少的某些语法并不被C++支持(虽然这些语法不常用)。

  2. C++相比C语言增加了很多新特性,这就导致C++的编译器会执行更严格的编译检查。所以如果用C++编译器编译C语言代码,需要让你的C语言代码反过来符合C++规范。这有时会限制你编写C语言程序。

  3. C++最初确实是以C语言为基础设计的,但随着时间的推移,两者已经发展成为两个独立的、具有各自特性和用途的编程语言。希望大家不要把这两门语言混为一谈。

总之,即便大多数情况下用.cpp写C语言代码是没问题的,但为了避免踩坑出问题,也为了谨记C不是C++,还是请大家用.c来编写C语言代码,安全省心。

编写代码

Gn!

创建完毕.c文件后,双击打开此文件,然后编写代码。

在本小节中,我们只管写代码运行,下节我们再讲这些代码的含义。

一个简单的hello world案例

代码编写完成后,你可以使用以下两个按钮来启动程序(在VS主界面的上方菜单栏):

VS-启动程序的两个按钮

这两个按钮的差别是:

  1. 点击按钮1"本地 Windows 调试器"启动程序,此时程序会以Debug模式启动。

  2. 点击按钮2"开始执行(不调试)"启动程序,此时程序会以正常模式启动。

关于Debug模式和正常启动程序的区别,后续课程会详细讲解。在日常的开发中,我们更建议大家使用按钮1,以Debug模式来启动程序。

点击启动程序后,若正常运行不出意外,你会看到控制台如下图所示:

VS-HelloWorld运行结果

当然,如果出问题大概率就是代码中的单词拼错了,某一句代码漏了分号等问题。请检查一下VS的错误输出列表,修改代码即可!

Rd!

注意事项:

  1. 请大家把编译器的版本从默认的x64(64位)改为x86(32位)。这么做的目的主要是为了上课方便以及规避一些可能存在的坑。

    即:

    选择32位平台编译器来编译代码

  2. 无论点击哪个按钮,以什么模式启动程序,都需要经历编译源代码,生成可执行程序,执行可执行程序的过程。(这个过程后续会详细讲解,现在你只需要知道代码被编译执行就可以了。)

VS项目目录的说明(补充)

Gn!

在VS的解决方案资源管理器当中,我们可以清晰的看到一个项目下面又分了几个"层级",如下图所示:

VS项目的层级关系

我们可以在解决方案资源管理器当中选择一个项目,然后右键选项点击"在文件资源管理器中打开文件夹"。此时打开的就是此项目在本地的文件目录。

如下图所示:

VS项目目录

我们可以发现这个项目的目录下并没有我们想象的:

  1. 头文件目录文件夹

  2. 源文件文件夹

  3. 资源文件文件夹

  4. ...

这是因为:VS的一个项目当中的"外部依赖项"、"头文件"、"源文件"等并不是一个物理目录,只是一个逻辑上的分类。实际上它们直接物理存储在同一个目录下!

此目录下存储的诸如.vcxproj作为后缀名的文件,实际上就是存储了这些同一个目录下的项目文件的关系。

所以就VS而言,解决方案,项目的关系可以用下图来描绘: VS解决方案、项目组织图

试想一下,如果在VS项目的"头文件"下面创建一个"hello.h",如下图所示:

创建一个新的头文件

这两个文件在实际的项目目录下,是如何存储的呢?

答案很简单,直接存储在同一目录下。

HelloWorld程序的注意事项(重点)

Gn!

对于一个简单的HelloWorld程序,代码如下:

简单的HelloWorld-C程序

请大家注意以下细节:

  1. "#include"和"<stdio.h>"之间一定要有一个空格!!!

  2. 代码中"int mian(){}"被成为main函数。对一个C语言程序而言,main函数(也叫主函数)是具有唯一性的,因为它是程序的入口,所有C语言的程序都会从main函数开始执行。

那么对于VS而言,若一个项目中出现了多个main函数,程序该从哪里执行呢?显然VS是不可能自己搞清楚这个事情的。

所以VS不允许一个项目中出现两个main函数,如果希望写两个main函数,请创建多个项目!

多项目的解决方案如何启动?

Gn!

由于一个项目只能存在一个main函数,所以如果希望多个main函数共存,就需要创建存在多个项目的解决方案。

我们已经知道这个按钮的作用是:

VS-启动C程序

编译代码,生成可执行程序,然后运行这个可执行程序。

那么如果此解决方案有多个项目,又是什么情况呢?

很简单,由于每个项目中最多只有一个main入口函数,那么VS会编译每一个项目中的代码,为每一个项目生成一个可执行文件。也就是会生成多个可执行文件。

那么问题又来了,多个可执行文件最终执行哪一个呢?还是时候全部都执行?

观察下图中同一个解决方案下的,两个项目的项目名,它们有什么区别?

多项目解决方案

很显然,第一个项目HelloWorld的名字是加粗的。这种加粗意味着项目HelloWorld是启动项目,点击启动按钮,会执行该项目生成的可执行文件。

VS也提供了修改启动项目的功能,右键单击某个项目会出现如下图所示的菜单:

VS设置启动项目

设定启动项目后,点击按钮就会运行对应项目中的main方法。

除了设置固定的启动项目外,VS还可以直接将启动项目设置为当前打开的项目,如下所示:

VS设置启动项目为当前项目

两种方式,大家自行选择一种即可。

其他补充

Gn!

VS在实际使用过程中,可以进行一些设置,使得它更好用。这一部分内容都不重要,也没什么必须的设置,大家感兴趣看一下,觉得无所谓就不要看了。

更好用的代码提示功能

Gn!

使用VS写代码时,若想选择代码提示进行输入,需要按一下Tab键再回车,这未免麻烦了点,我们可以进行以下设置,使得可以直接回车选择代码提示:

  1. 打开 Visual Studio。

  2. 点击菜单栏中的"工具 --> 选项"

  3. 在左侧的导航树中,定位到"文本编辑器 --> C/C++ --> 高级"

  4. 在右侧的设置列表中,找到与 IntelliSense 相关的设置。

  5. 将"主动提交成员列表"从默认设置的False改成True。

更好用的代码提示功能-设置界面

设置完成后,代码提示出现时就可以直接回车选择生成代码了,这样会更方便一些。

查看或修改C语言版本

Gn!

要查看或修改在Visual Studio中使用的C语言版本:

  1. 打开你的项目。

  2. 右键点击项目名,选择 属性

  3. 在左侧导航窗格中,选择 配置属性--> 常规

  4. 查找与C语言标准相关的选项(C语言标准),并根据需要进行调整。

项目属性当中的C语言标准

那么上图中的MSVC是什么东西呢?

C语言标准中的旧MSVC是什么?

默认情况下,VS采用(旧MSVC)作为C语言的版本。那么MSVC是什么呢?

MSVC(Microsoft Visual C++)是微软公司自己开发的C、C++语言编译器套件,可以用来编译C或者C++程序。但它有自己的一套特性和扩展,并不完全遵循官方标准。

比如MSVC中的C语言编译器,它支持C90的全部特性和部分C99的特性,几乎不支持C11等更高版本。

在当下我们的学习中,这个编译器已经够用了,因为我们只学习C语言的基本概念语法。

MSVC存在一些特定于Windows平台的扩展和特性,这在某种程度上限制了其跨平台性,而且它对C语言的支持并不好。

为了更好的实现跨平台性,尤其是对Unix/Linux操作系统的支持,我们在后续会使用GCC作为编译器。

GCC(GNU Compiler Collection即GNU编译器套件),是Unix-like平台下最常用的C/C++语言编译器。它开源免费,性能优良,完整支持官方标准,扩展性和跨平台性好。

修改启动快捷键

Gn!

点击菜单栏中的"工具 --> 选项",打开设置选项卡。按照下图输入"调试.启动"搜索找到该快捷键,然后即可进行修改。

修改调试启动快捷键

默认的Debug调试启动快捷键是F5,我一般都会修改成F1。

同样的操作,搜索"调试.开始执行不调试"可以找到正常启动快捷键,然后也可以进行修改。

修改正常启动快捷键

默认的正常不调试启动快捷键是Ctrl + F5,我一般都会修改成Ctrl + F1,但这个快捷键基本不会使用,改不改都不太所谓。

如果你想修改VS的其它快捷键,也可以仿照该案例去完成。

选择启动项目的插件

Gn!

在使用VS编写C代码的过程中,毫无疑问需要经常创建多项目解决方案,此时频繁手动切换启动项目是比较麻烦的。所以推荐一个可视化选择启动项目的插件:

SwitchStartupProject

大家可以在"扩展--管理扩展"的"联机市场"中搜索此插件安装,然后重启VS即可。

安装成功后,主界面菜单栏下就会多一个下拉框用于选择当前启动项目,这个插件还是比较方便的,推荐安装。

选择启动项目-插件

注:此插件偶尔会有bug无法选择启动项目,此时重启解决方案即可解决。

固定当前项目为启动项目

Gn!

拥有上面一个插件后,虽然让我们的VS启动项目操作变得简单很多了,但实际还是不太方便的,还是需要每次都点击选择启动项。

实际上我们更希望,点击哪个项目中的main.c文件,哪个项目就是启动项目。VS支持这样的设置,参考下列步骤设置:

点击菜单栏中的"工具 --> 选项",打开设置选项卡。按照下图输入"生成并运行"搜索找到对应选项框,勾选它即可。

更好用的启动项目设置-图示

这样设置后,你每次创建的新的解决方案,都会固定使用当前选定的项目作为启动项目。

VS的一些快捷键

Gn!

VS常用快捷键:

Ctrl + L: 快速删除当前行

Ctrl + D: 快速复制当前行到下一行

Ctrl + 空格: 强制显示代码提示

Ctrl + Alt + L: 打开解决方案资源管理器。

Ctrl + K + D(按住Ctrl后再按K和D两个键位): 标准格式排版整个文件中的代码

Ctrl + Shift + /:快速注释以及释放注释。

配置代码模板(必做)

Gn!

如果每次新建项目时,都选择"空项目"或者"控制台应用",那么接下来就需要自己动手新建一个".c"文件编写main函数代码,这是比较麻烦的。所以建议大家配置一个代码模板,这样便于大家快速创建一个C程序骨架。

按照以下流程走:

1.创建一个标准的C项目

  1. 打开Visual Studio

  2. 新建一个C++"控制台应用"项目。

  3. 在解决方案资源管理器中,删除所有默认生成的.cpp文件。

  4. 添加一个新的.c文件,命名为main.c

  5. main.c文件中,输入你想要的默认内容。

这里推荐一个"main.c"文件的代码内容:

C代码推荐模板

其中:

  1. "#define _CRT_SECURE_NO_WARNINGS" 是微软的MSVC平台下特有的宏定义,用于禁用运行时编译警告。

  2. "#include <stdio.h>"包含头文件,这样就可以使用"printf"等函数。

导出项目为模板

  1. 在VS的文件菜单上选择“项目 --> 导出模板”。

  2. 选择“项目模板”,然后点击下一步。

  3. 输入模板的名称、描述等相关信息,然后点击完成。(注意模板的名称必须是英文的,不能用中文)

  4. 记住你输入的模板的名字,方便后续创建项目时使用。

导出项目为模板-图

使用新模板创建项目

  1. 当你下次新建一个项目时,你可以在模板中下拉找到你创建的项目模板。

  2. 选择你刚才保存的模板,输入你的项目名,并创建。

  3. 这个新项目会自动生成一个main.c文件,内容和你在模板中设置的完全相同。

你还可以将你的模板固定在项目创建的左页面,比如下图:

固定项目模板到页面

这样下一次你就可以更快的找到你创建的模板了。

修改项目模板的代码

在很多时候,我们需要随着学习进度来修改模板的代码,比如我想要在模板当中添加一些宏定义或者头文件包含指令。首先你需要找到模板的.c文件文件存储的路径,它一般在:

C:\Users(用户)\(用户名)\Documents(文档)\Visual Studio 2022\Templates\ProjectTemplates

比如在我的电脑当中,这个文件就在:

模板代码文件位置

此时打开这个模板文件,修改当中的main.c文件即可:

修改模板代码文件

修改后,再次使用VS新建项目,就可以看到模板代码已经发生了变化。(旧项目没有任何影响)

以上,就完成了VS项目模板的配置和使用。

The End