1-02VS的安装与测试

一、概述

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

下面讲一下如何安装VS,按照步骤完成即可。

二、安装Visual Studio

1. 下载引导安装包

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

选择下载社区版Community即可

图 1. VS下载引导安装包VS下载引导安装包

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

图 2. VS下载引导安装包-Mac版VS下载引导安装包-Mac版

如果你不想在官网下载安装(或者你根本打不开微软的网站),可以选择从百度网盘下载引导安装包:

链接:https://pan.baidu.com/s/1e27THIEiIVGTdzYmdpHsrA?pwd=4uo0 提取码:4uo0

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

2. 在线安装(推荐)

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

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

    图 3. VS安装-工作负荷选择VS安装-工作负荷选择

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

  2. 安装位置选择:

    图 4. VS安装-安装位置选择VS安装-安装位置选择

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

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

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

    图 5. VS安装-联网下载安装VS安装-联网下载安装

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

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

注意事项

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

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

    图 6. VS安装-登录微软账号VS安装-登录微软账号

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

3. 离线安装(后补方案)

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

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

    链接:https://pan.baidu.com/s/1hp7ZAFaP_R11Ih8y0ReUTQ?pwd=jpgp 提取码:jpgp

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

    图 7. 离线安装VS-步骤1离线安装VS-步骤1

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

    图 8. VS离线安装-步骤2VS离线安装-步骤2

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

    1

    .\vs_setup.exe --noWeb --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended 
    

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

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

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

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

三、使用Visual Studio进行开发

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

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

1. 创建项目

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

图 9. 第一次打开VS的效果图第一次打开VS的效果图

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

图 10. VS主界面VS主界面

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

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

图 11. 使用VS创建项目使用VS创建项目

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

图 12. 创建控制台应用创建控制台应用

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

图 13. 配置新项目页面配置新项目页面

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

2. 配置项目

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

  1. 项目名称。
  2. 位置。
  3. 解决方案名称。

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

1. 项目 VS 解决方案(重要)

解决方案:

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

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

项目:

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

通俗的说:

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

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

  1. IDEA的module(模块)是开发的基本单元,project(工程)是模块的容器,一个工程最少有一个模块,但也可以有多个模块。
  2. VS的项目是开发的基本单元,解决方案是项目的容器,一个解决方案至少有一个项目,但也可以有多个项目。

2. 命名

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

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

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

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

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

  1. **采用大驼峰命名法(也叫帕斯卡命名法)。**每个单词的首字母都大写,包括第一个单词,各个单词之间直接连接不用加下划线等符号。例如:FirstName、MyProgram等。
  2. 尽量避免出现空格,点、横杆等特殊字符。命名仅由英文字符和数字组成。

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

注意事项

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

  1. “00_HelloWorld”:第一个项目,这个项目叫HelloWorld。
  2. “50C_Day01”:第50期,C语言部分内容的第一天。

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

3. 完成项目创建

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

图 14. VS项目创建配置图VS项目创建配置图

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

3. 创建源文件

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

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

图 15. VS项目主界面-HelloWorldVS项目主界面-HelloWorld

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

然后**“右键点击源文件 --> 添加 --> 新建项”**,

图 16. VS新建项VS新建项

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

图 17. 新建项选择-情况1新建项选择-情况1

图 18. 新建项选择-情况2新建项选择-情况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文件后,双击打开此文件,然后编写代码。

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

代码块 1. 一个简单的hello world案例

1

#include <stdio.h>

2

int main() {

3

printf("hello world!\n");

4

return 0;

5

}

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

图 19. VS-启动程序的两个按钮VS-启动程序的两个按钮

这两个按钮的差别是:

  1. 点击按钮1**“本地 Windows 调试器”**启动程序,此时程序会以Debug模式启动。
  2. 点击按钮2**“开始执行(不调试)”**启动程序,此时程序会以正常模式启动。

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

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

图 20. VS-HelloWorld运行结果VS-HelloWorld运行结果

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

注意事项:

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

    即:

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

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

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

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

图 22. VS项目的层级关系VS项目的层级关系

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

如下图所示:

图 23. VS项目目录VS项目目录

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

  1. 头文件目录文件夹
  2. 源文件文件夹
  3. 资源文件文件夹

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

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

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

图 24. VS解决方案、项目组织图VS解决方案、项目组织图

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

图 25. 创建一个新的头文件创建一个新的头文件

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

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

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

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

代码块 2. 简单的HelloWorld-C程序

1

#include <stdio.h>

2

int main() {

3

printf("hello world!\n");

4

return 0;

5

}

请大家注意以下细节:

  1. “#include"和”<stdio.h>"之间一定要有一个空格!!!
  2. 代码中"int mian(){}"被成为main函数。对一个C语言程序而言,main函数(也叫主函数)是具有唯一性的,因为它是程序的入口,所有C语言的程序都会从main函数开始执行。

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

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

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

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

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

图 26. VS-启动C程序VS-启动C程序

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

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

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

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

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

图 27. 多项目解决方案多项目解决方案

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

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

图 28. VS设置启动项目VS设置启动项目

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

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

图 29. VS设置启动项目为当前项目VS设置启动项目为当前项目

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

四、其他补充

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

1. 更好用的代码提示功能

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

  1. 打开 Visual Studio。
  2. 点击菜单栏中的**“工具 --> 选项”**。
  3. 在左侧的导航树中,定位到**“文本编辑器 --> C/C++ --> 高级”**。
  4. 在右侧的设置列表中,找到与 IntelliSense 相关的设置。
  5. 将"主动提交成员列表"从默认设置的False改成True。

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

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

2. 查看或修改C语言版本

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

  1. 打开你的项目。
  2. 右键点击项目名,选择 属性
  3. 在左侧导航窗格中,选择 配置属性–> 常规
  4. 查找与C语言标准相关的选项(C语言标准),并根据需要进行调整。

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

3. 修改启动快捷键

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

图 32. 修改调试启动快捷键修改调试启动快捷键

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

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

图 33. 修改正常启动快捷键修改正常启动快捷键

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

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

4. 选择启动项目的插件

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

SwitchStartupProject

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

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

图 34. 选择启动项目-插件选择启动项目-插件

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

5. VS的一些快捷键

VS常用快捷键:

Ctrl + L: 快速删除当前行

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

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

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

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

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

6. 配置代码模板(建议做)

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

按照以下流程走:

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

  1. 打开Visual Studio
  2. 新建一个C++"控制台应用"项目。
  3. 在解决方案资源管理器中,删除所有默认生成的.cpp文件。
  4. 添加一个新的.c文件,命名为main.c
  5. main.c文件中,输入你想要的默认内容。

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

代码块 3. 代码模板-推荐内容

1

#define _CRT_SECURE_NO_WARNINGS

2

#include <stdio.h>

3


4

/**********************************************************************

5

 *                          COMMENT                                   *

6

 **********************************************************************/

7


8

int main(void) {

9

  printf("hello world!\n");

10


11

  return 0;

12

}

其中:

  1. “#define _CRT_SECURE_NO_WARNINGS” 是微软的MSVC平台下特有的宏定义,用于禁用运行时编译警告。
  2. "#include <stdio.h>"包含头文件,这样就可以使用"printf"等函数。

导出项目为模板

  1. 在VS的文件菜单上选择“项目 --> 导出模板”。
  2. 选择“项目模板”,然后点击下一步。
  3. 输入模板的名称、描述等相关信息,然后点击完成。(注意模板的名称必须是英文的,不能用中文)
  4. 记住你输入的模板的名字,方便后续创建项目时使用。

使用新模板创建项目

  1. 当你下次新建一个项目时,你可以在模板中下拉找到你创建的项目模板。
  2. 选择你刚才保存的模板,输入你的项目名,并创建。
  3. 这个新项目会自动生成一个main.c文件,内容和你在模板中设置的完全相同。

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

图 35. 固定项目模板到页面固定项目模板到页面

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/327184.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习中的知识蒸馏

一.概念 知识蒸馏&#xff08;Knowledge Distillation&#xff09;是一种深度学习中的模型压缩技术&#xff0c;旨在通过从一个教师模型&#xff08;teacher model&#xff09;向一个学生模型&#xff08;student model&#xff09;传递知识来减小模型的规模&#xff0c;同时保…

CSS基础笔记-03选择器

CSS基础笔记系列 《CSS基础笔记-01CSS概述》《CSS基础笔记-02动画》 前言 在前面两篇博客中&#xff0c;我实际上已经使用过了选择器。但到底什么是选择器、有什么作用&#xff0c;我反而不能表达出来。因此&#xff0c;决定记录了我的学习和思考。 什么是选择器 selector…

软件测试/测试开发丨Selenium 高级控件交互方法

一、使用场景 使用场景对应事件复制粘贴键盘事件拖动元素到某个位置鼠标事件鼠标悬停鼠标事件滚动到某个元素滚动事件使用触控笔点击触控笔事件&#xff08;了解即可&#xff09; www.selenium.dev/documentati… 二、ActionChains解析 实例化类ActionChains&#xff0c;参…

VLM,LLM等大模型如何应用于机器人控制(以强化学习为例)

VLM&#xff1a;视觉语义模型&#xff0c;准确识别图中有什么&#xff0c;处于什么状态&#xff0c;以及不同物体之间的关联。 LLM&#xff1a;语言大模型&#xff0c;可以针对当前的环境&#xff0c;自动生成可执行的任务&#xff0c;或者将人类指令重新分成可执行的子任务。…

MySQL之视图内连接、外连接、子查询

一、视图 1.1 含义 虚拟表&#xff0c;和普通表一样使用 视图&#xff08;view&#xff09;是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。但是&#xff0c;数据库中只存放了视图的定义&#xff0c;而并没有存放…

函数图像化

函数图像化 在进行模型提取时&#xff0c;往往会需要选择拟合的函数&#xff0c;因此&#xff0c;了解函数的图像对于模型拟合提取有益&#xff0c;以下是常见的一些函数的曲线 1 二次函数 常见的耳二次函数曲线&#xff0c;转换x与y数量级差异仅一个数量级&#xff0c; 2 三…

使用EXCEL计算相关系数R和R方

对于EXCEL中的两列&#xff0c;一列是预测值&#xff0c;另一列是实测值 得到的R为0.73 R方就是R*R为0.49左右

element-ui table-自定义表格某列的表头样式或者功能

自带表格 自定义表格某列的表头样式或者功能 <el-table><el-table-column :prop"date">//自定义表身每行数据<template slot-scope"scope">{{scope.row[scope.column.label] - ? - : scope.row[scope.column.label]}}</template>…

NNDL总结

第四章 前馈神经网络 4.1 神经元 人工神经元&#xff0c;简称神经元&#xff0c;是构成神经网络的基本单元。 当>0时&#xff0c;为1&#xff0c;兴奋&#xff1b; 当<0时&#xff0c;为0&#xff0c;抑制。 激活函数的性质 1、连续可导的非线性函数。 2、激活函数及其导…

大型语言模型的幻觉问题

1.什么是大模型幻觉&#xff1f; 在语言模型的背景下&#xff0c;幻觉指的是一本正经的胡说八道&#xff1a;看似流畅自然的表述&#xff0c;实则不符合事实或者是错误的。 幻觉现象的存在严重影响LLM应用的可靠性&#xff0c;本文将探讨大型语言模型(LLMs)的幻觉问题&#x…

Python3 元组----20240105

Python 的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号 ( ),列表使用方括号 [ ]。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。 >>> tup1 = (Google, Runoob, 1997, 2000) >>> tup2 = (1<

stm32引脚输入输出设置寄存器操作汇总

下图时正点原子i2c时使用的宏定义 下面的代码是对PA0-PH15的引进行了穷举法代码&#xff0c;使用的时候只需要拷贝三行相应的引脚即可。 //IO方向设置 #define IIC_SDA PAout(0) //SDA #define SDA_IN() {GPIOA->CRL&0XFFFFFFF0;GPIOA->CRL|(u32)8<<0…